C#中将字符串转换为XmlNode的更好方法

59


我想将一个字符串(显然是 XML)转换为 C# 中的 XmlNode。在搜索网络时,我找到了这段代码。我想知道是否这是将字符串转换为 XmlNode 的好方法?我需要在循环内执行此转换,所以它会导致任何性能问题吗?

        XmlTextReader textReader = new XmlTextReader(new StringReader(xmlContent));
        XmlDocument myXmlDocument = new XmlDocument();
        XmlNode newNode = myXmlDocument.ReadNode(textReader);

请回复,

谢谢
Alex

3个回答

119

应该很简单:

        string xmlContent = "<foo></foo>";
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(xmlContent);
        XmlNode newNode = doc.DocumentElement;

如果有LINQ选项的话,也可以使用LINQ:

        XElement newNode  = XDocument.Parse(xmlContent).Root;

7
当我尝试这样做时,出现了以下错误:要插入的节点来自不同的文档上下文。 - iambriansreed
1
节点插入的来源与当前文档不同。 - simonalexander2005
这个完美地运行了。我先尝试了LINQ选项,但是出现了问题。因为调用方法无法处理System.Xml.Linq.XmlElement。 - Black Frog
你能否帮忙看一下我的一个问题(https://stackoverflow.com/questions/55440649/unable-to-get-values-from-soap-response-using-c-sharp)? - Moeez

2

接受的答案仅适用于单个元素。XmlNode 可以有多个元素,例如 string xmlContent = "<foo></foo><bar></bar>"; (异常:“存在多个根元素”);

要加载多个元素,请使用以下内容:

string xmlContent = "<foo></foo><bar></bar>";
XmlDocument doc = new XmlDocument();
doc.LoadXml("<singleroot>"+xmlContent+"</singleroot>");
XmlNode newNode = doc.SelectSingleNode("/singleroot");

-4
XmlDocument Doc = new XmlDocument();
Doc.LoadXml(xml);

4
欢迎来到 Stack Overflow!此回答内容与其他答案重复,未添加任何新的内容。请勿发布没有实质性新贡献的答案。 - DavidPostill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接