2

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

这段代码

    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() 之外的任何想法,因为如果它是纯文本会抛出异常?

4

3 回答 3

1

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

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

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

这种方法也可能更快。

于 2014-01-13T18:37:06.833 回答
0

这样做怎么样:

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

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

于 2013-05-16T12:12:34.223 回答
0

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

object resultContent;

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

XDocument xDoc = new XDocument(new XElement("results", resultContent));
于 2013-05-16T11:48:28.493 回答