【问题标题】:How to add an existing Xml string into a XElement如何将现有 Xml 字符串添加到 XElement
【发布时间】:2009-09-12 07:34:36
【问题描述】:

如何将现有的 Xml 字符串添加到 XElement 中?

这段代码

        var doc = new XDocument(
            new XElement("results", "<result>...</result>")
        );

当然会产生这个

  <results>&lt;result&gt;&lt;/result&gt;</results>

但我需要这个

  <results><result>...</result></results>

有什么想法吗?

【问题讨论】:

    标签: .net xml xelement


    【解决方案1】:

    这应该可行:

    var xmlString = "<result>sometext</result>";
    var xDoc = new XDocument(new XElement("results", XElement.Parse(xmlString)));
    

    【讨论】:

    • 太棒了!我没有看类方法。非常感谢!
    • XElement.Parse(xmlString)
    【解决方案2】:

    Sani Singh Huttunen 的回答让我走上了正轨,但它只允许 results 元素中有一个 result 元素。

    var xmlString = "<result>sometext</result><result>alsotext</result>";
    

    因 System.Xml.XmlException 失败

    有多个根元素。

    我通过将 results 元素移动到字符串文字解决了这个问题

    var xmlString = "<results><result>sometext</result><result>alsotext</result></results>";
    

    使其只有一个根元素,然后将解析后的字符串直接添加到父元素中,如下所示:

    parent.Add(XElement.Parse(xmlString));
    

    【讨论】:

      【解决方案3】:

      Is there an XElement equivalent to XmlWriter.WriteRaw?上查看我的回答

      基本上,仅当您知道它已经是有效的 XML 时才替换内容的占位符

      var d = new XElement(root, XML_PLACEHOLDER);
      var s = d.ToString().Replace(XML_PLACEHOLDER, child);
      

      这种方法也可能比使用XElement.Parse 解析更快。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多