C# 2.0 System.Data.SqlTypes.SqlXml オブジェクトを System.Xml.XmlNode に変換する

StackOverflow https://stackoverflow.com/questions/90803

質問

C# でデータを XML との間で変換する際に、常に問題が発生するようです。完全な XMLDocument オブジェクトを作成する必要がないと思われる場合でも、常に完全な XMLDocument オブジェクトを作成するよう求められます。この場合、MS SQL 2005 サーバーに SQLXML 列があり、それを引き出して、パラメータとして XMLNode を必要とする関数にプッシュしようとしています。これは簡単だと思うかもしれませんが、文字列に変換して新しい XMLNode オブジェクトを作成する以外に、正しい方法がわかりません。

SqlDataReader、sqlComm.ExecuteReader() を使用してリーダーをロードし、sqlReader.GetSqlXml(0) を使用して SQLXML オブジェクトを取得できますが、それを XmlNode に変換するにはどうすればよいでしょうか?

逆に、sqlComm.ExecuteXmlReader() を使用して XmlReader を取得することもできますが、リーダーから XmlNode を抽出するにはどうすればよいでしょうか? http://bytes.com/forum/thread177004.html XmlTextReader では実行できないと言われていますが、XmlNodeReader を使用する必要がありますか?

助けてください!

役に立ちましたか?

解決

結局使用する必要はありませんでしたが、最良の答えだと思うものを見つけました。基本的には、XmlReader を読み込み、リーダーから XmlDocument を作成し、ドキュメントからノードのリストを選択して XmnLodeList に入れます。これは ForEach ステートメントで使用できます。以下にサンプルコードを示します。

System.Xml.XmlReader sqlXMLReader = sqlComm.ExecuteXmlReader();
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.Load(sqlXMLReader);
System.Xml.XmlNodeList xnlJobs = xmlDoc.SelectNodes("/job");

まだめちゃくちゃ複雑ですが、少なくとも XML から文字列への変換はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top