【问题标题】:Better way to convert a string to XmlNode in C#在 C# 中将字符串转换为 XmlNode 的更好方法
【发布时间】:2010-11-09 03:45:47
【问题描述】:


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

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

请回复,

谢谢
亚历克斯

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    应该直截了当:

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

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

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

    【讨论】:

    • 我在尝试此操作时收到此错误:The node to be inserted is from a different document context.
    • 这非常有效。我首先尝试了导致问题的 LINQ 选项。因为我的调用方法无法处理 System.Xml.Linq.XmlElement.
    • 你能看看我的question之一
    【解决方案2】:

    接受的答案仅适用于单个元素。 XmlNode 可以有多个元素,例如string xmlContent = "&lt;foo&gt;&lt;/foo&gt;&lt;bar&gt;&lt;/bar&gt;";(例外:“有多个根元素”);

    要加载多个元素,请使用:

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

    【讨论】:

      【解决方案3】:
      XmlDocument Doc = new XmlDocument();
      Doc.LoadXml(xml);
      

      【讨论】:

      • 欢迎来到 Stack Overflow!这重复了另一个答案并且没有添加新内容。除非您确实有新的贡献,否则请不要发布答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      相关资源
      最近更新 更多