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

23

如何将一个已经存在的 Xml 字符串添加到 XElement 中?

代码如下:

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

当然会产生这个

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

但我需要这个

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

有什么想法吗?

3个回答

34

这应该可以工作:

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

太好了!我没有看类的方法。非常感谢! - r00kie

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));

1

请查看我在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 解析更快。

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