2008-09-18 43 views
2

我似乎总是在C#中将数据转换为XML或从XML转换数据时遇到问题。它总是希望你创建一个完整的XMLDocument对象,即使你认为你不需要。在这种情况下,我在MS SQL 2005服务器中有一个SQLXML列,我试图将其插入一个需要XMLNode作为参数的函数中。你会认为这很容易,但除了将其转换为字符串并创建一个新的XMLNode对象之外,我无法找到正确的方法来完成它。将C#2.0 System.Data.SqlTypes.SqlXml对象转换为System.Xml.XmlNode

我可以使用SqlDataReader,sqlComm.ExecuteReader()加载阅读器,然后使用sqlReader.GetSqlXml(0)来获取SQLXML对象,但是如何将其转换为XmlNode?

相反,我可以使用sqlComm.ExecuteXmlReader()来获取XmlReader,但是如何从读取器中提取XmlNode? http://bytes.com/forum/thread177004.html说它不能用XmlTextReader完成,我应该使用XmlNodeReader吗?

请帮忙!

回答

5

我最终没有使用它,但我发现我认为是最好的答案。基本上你加载一个XmlReader,从reader中创建一个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字符串到XML转换。

+0

SqlXML可以直接转换为字符串stringName = SqlXMLName.Value; – Observer 2016-12-09 16:08:39