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

时间:2009-09-12 07:34:37

标签: .net xml xelement

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

此代码

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

当然会产生这个

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

但我需要这个

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

有什么想法吗?

3 个答案:

答案 0 :(得分:29)

这应该有效:

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

答案 1 :(得分:2)

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

$(input).closest('.pic-box').find('img.img-upload').prop('src', e.target.result);

因System.Xml.XmlException

而失败
  

有多个根元素。

我通过将结果元素移动到字符串文字

来解决这个问题
var xmlString = "<result>sometext</result><result>alsotext</result>";

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

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

答案 2 :(得分: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解析它更快。