22

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

这段代码

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

当然会产生这个

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

但我需要这个

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

有任何想法吗?

4

3 回答 3

33

这应该有效:

var xmlString = "<result>sometext</result>";
var xDoc = new XDocument(new XElement("results", XElement.Parse(xmlString)));
于 2009-09-12T07:59:17.950 回答
2

Sani Singh Huttunen 的回答让我走上了正轨,但它只允许结果元素中包含一个结果元素。

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

System.Xml.XmlException 失败

有多个根元素。

我通过将结果元素移动到字符串文字来解决这个问题

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

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

parent.Add(XElement.Parse(xmlString));
于 2016-12-16T09:34:01.560 回答
1

请参阅我的答案是否有与 XmlWriter.WriteRaw 等效的 XElement?

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

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

此方法也可能比使用 解析它更快XElement.Parse

于 2014-01-13T18:38:54.293 回答