私はC#を初めて使用しています。これは単純な作業であれば謝ります。私がしたいことは、ルートノードがテーブル名であり、ルートノードの子がフィールド名と値であるXMLファイルを開くことです。私は、フィールドをSQL Serverデータベースのルートノードのテーブルにマップし、必要に応じて更新または挿入したいと考えています。ノードツリーをループしてSQL文字列を構築するよりも、これを行うより洗練された方法があれば誰にも分かりますか? XML文書がフォームであるかのようにフィールドをバインドする方法がなければならないようですが、メモリ内にしか存在しません。再び、この質問には明らかな答えがある場合は申し訳ありません。助けを前にありがとう。XMLノードをデータテーブルのフィールドにマップする
0
A
答えて
0
私は、このようなタスクを解決するためにOPENXMLメソッドを使用します。 BOLからの例では、XMLからデータを選択する方法があります:
のでDECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order OrderID="10248" CustomerID="VINET" EmployeeID="5"
OrderDate="1996-07-04T00:00:00">
<OrderDetail ProductID="11" Quantity="12"/>
<OrderDetail ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order OrderID="10283" CustomerID="LILAS" EmployeeID="3"
OrderDate="1996-08-16T00:00:00">
<OrderDetail ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- SELECT stmt using OPENXML rowset provider
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer/Order/OrderDetail',2)
WITH (OrderID int '../@OrderID',
CustomerID varchar(10) '../@CustomerID',
OrderDate datetime '../@OrderDate',
ProdID int '@ProductID',
Qty int '@Quantity')
、あなたがDBにこのデータを挿入するOPENXMLステートメントのFROM SELECT、INSERTを...使用することができます。
0
最も簡単な方法は、おそらくXML型の単純なエンティティクラスを作成し、XMLシリアル化属性を使用してxml要素をクラスとそのプロパティにマップすることです。標準のXmlSerializerを使用して、xmlをオブジェクトに逆シリアル化したり、オブジェクトをxmlにシリアル化したりすることができます。オブジェクトを取得したら、ORマッパー(LINQ to SQL、Entity Framework、NHibernate)やiBatisなどのエンティティクラスを使用して更新/挿入/削除を実行するのは簡単です。
関連する問題
- 1. XMLノードをXMLノードコレクションにコピーする(PHP)
- 2. Linq DateTimeでデータテーブルをソートするフィールド
- 3. ノードごとにストリームXMLノード
- 4. 1つのDOM XMLノードを別のノードにコピーする
- 5. Xmlノードを編集する
- 6. 負荷のxml「行」Rデータテーブルに
- 7. XMLノードをツリービューノードにバインドする
- 8. フォームにXMLを追加するノード
- 9. XMLノードに属性を追加する
- 10. C#のxmlドキュメントをデータテーブルに変換する
- 11. このデータテーブルをXMLに変換する方法
- 12. XMLをC#オブジェクトにマップする方法
- 13. linqを使用してデータテーブルをxmlに変換する
- 14. LINQ-to-XMLを使用してXMLノードにXMLノードを保存する方法は?
- 15. ノードにも内部ノードがある場合、ノードの値をマップする方法はありますか?
- 16. XMLノードを読む
- 17. xmlノードを除外
- 18. xmlファイルからデータテーブルにデータを取得する方法
- 19. LINQ XML親ノードの子ノードを取得する
- 20. xmlの子ノード名
- 21. XMLの重複ノード
- 22. ランダムxmlノードのテキストファイル
- 23. AS3 XMLノードのトラバーサル
- 24. ノード上にOpenLayersマップを表示
- 25. は、XMLノード
- 26. XMLノード名クリーンアップコード
- 27. 内部ノードによるXMLの解析?
- 28. ノードのテキストに大なり文字を含むXMLノードをフィルタリングする
- 29. Xml逆シリアル化 - xml-dataの未知のノードの後、すべてのフィールドが空のままです。
- 30. 各特定のノードのすべてのXML子ノードを読む