【问题标题】:Get xelement value with namespaced xdocument in c#在 c# 中使用命名空间 xdocument 获取 xelement 值
【发布时间】:2011-07-07 02:07:25
【问题描述】:

如果 xdocument 具有命名空间属性,我将无法获取 xelement 值。这是我的代码:

string ts = @"<TestNameSpace xmlns='http://www.w3.org/2001/XMLSchema'>
  <requestID>
    <client>xxxx</client>
    <id>yyyy</id>
    <timestamp>zzzz</timestamp>
 </requestID>
</TestNameSpace>";
XDocument doc1 = XDocument.Parse(ts);
XElement reqID = doc1.Root.Element("requestID");

我的问题是 reqID 在上面的代码中返回空数据。如果没有 xmlns 属性或 xmlns 为空值,则 reqID 将获得正确的数据。

谁能告诉我上面的代码有什么问题?

感谢提前。

【问题讨论】:

    标签: c#-4.0 linq-to-xml xml-namespaces


    【解决方案1】:

    你需要先定义一个XNamespace

    XNamespace ns = "http://www.w3.org/2001/XMLSchema";
    

    然后在您的查询中使用它:

    XDocument doc1 = XDocument.Parse(ts);
    XElement reqID = doc1.Root.Element(ns + "requestID");
    

    【讨论】:

      【解决方案2】:

      试试这样:

      string xml = 
      @"<TestNameSpace xmlns='http://www.w3.org/2001/XMLSchema'>
        <requestID>
          <client>xxxx</client>
          <id>yyyy</id>
          <timestamp>zzzz</timestamp>
       </requestID>
      </TestNameSpace>";
      var doc = XDocument.Parse(xml);
      XNamespace ns = "http://www.w3.org/2001/XMLSchema";
      var reqID = doc.Root.Element(ns + "requestID");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-10
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        相关资源
        最近更新 更多