【问题标题】:Xdocument Descendants function gives exceptionXdocument 后代函数给出异常
【发布时间】:2012-07-31 22:02:57
【问题描述】:

我在 Xdocument 对象中加载了一个 html 文档:

XDocument xdoc = Xdocument.load(path);
XElement el = new XElement("name","value");

xdoc.Descendants("body").Single().Add(el);  <=== sequence conatin no element

document 包含 body 元素,那么为什么会出现这个异常?

【问题讨论】:

  • 您能否发布您的示例 XML,我相信您的 xml 中也有命名空间
  • 不,它只是一个简单的Html文档&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;
  • 你能用调用堆栈发布完整的异常吗?

标签: c# xml


【解决方案1】:

我怀疑问题是由于命名空间,它找不到body 元素。如果它在命名空间中,您可以使用以下命令找到它:

XNamespace ns = "whatever the namespace uri is";
xdoc.Descendants(ns + "body").Single().Add(el); 

【讨论】:

    【解决方案2】:

    尝试使用:

    xdoc.Root.Descendants("body").Single().Add(el);
    

    【讨论】:

      【解决方案3】:

      你可以找到没有 Namespase 的元素,只需在 XElement 中使用 LocalName

      XElement root = XElement.Load("Data.xml");
      root.Descendants().Where(x => x.Name.LocalName == "body")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多