将XML字符串添加到XElement

时间:2013-05-16 11:39:59

标签: c# .net xml xelement

您好我需要从字符串创建一个XElement,可以是xml或plain string。

此代码

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

产生这个

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

但如果字符串是XML,那么我需要正确的XMl

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

XElement.Parse()之外的任何想法,因为如果是纯文本,它会抛出异常吗?

3 个答案:

答案 0 :(得分: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);

这种方法也可能更快。

答案 1 :(得分:0)

我不知道是否有其他方法,它也看起来不是最好的方式,但你可以这样做:

object resultContent;

if (condition)
{
    //if content is XmlElement
    resultContent = new XElement("result", "....");
}
else
{
    resultContent = "Text";
}

XDocument xDoc = new XDocument(new XElement("results", resultContent));

答案 2 :(得分:0)

这样做:

XElement.Parse(String.Format("<Results>{0}</Results>",possibleXMLString));

...之前有人反对使用OP提到的.Parse()方法,请注意这不是提到的用法。