【问题标题】:Adding XML string to XElement将 XML 字符串添加到 XElement
【发布时间】:2013-05-16 11:39:59
【问题描述】:

您好,我需要从一个字符串创建一个 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() 之外的任何想法,因为如果它是纯文本会抛出异常?

【问题讨论】:

  • 试过innerXML了吗?
  • 你可以测试字符串是否为xml。例如。它包含 如果是则使用解析器,如果不做其他事情(当它不是 XML 时很难说出你想要什么)
  • 我本来想说这是stackoverflow.com/questions/1414561/…的副本,但关键是“XElement.Parse()以外”,如果不是出于同样的原因,这实际上也是我的问题跨度>

标签: c# .net xml xelement


【解决方案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);

这种方法也可能更快。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      这样做怎么样:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多