获取嵌套XML元素的默认命名空间(LINQ to XML)

时间:2017-12-07 10:43:16

标签: c# xml linq

  

我试图获取嵌套元素的默认命名空间。我的XML文件的一部分是:

<Node xmlns="http://namespace-root/">
 <Node1>
  <Node2 xmlns="http://namespace-element">Value</Node2>
 </Node1>
</Node>
  

我的部分查询代码是   (名称空间&#39; namespaceNode&#39;和@39; namespaceElement&#39;是XNamespace对象:

    from node in xDoc.Elements(namespaceNode+ "Node")
    select new DataObject
    {
        Xmlns = node.Element(namespaceNode+ "Node1").Element(namespaceElement+ "Node2").GetDefaultNamespace(),
        Value = (string)node.Element(namespaceNode+ "Node1").Element(namespaceElement+ "Node2")
    }
  

Value属性获取元素的值,但是如何将此节点的命名空间读取为Xmlns属性?

1 个答案:

答案 0 :(得分:0)

这就是我通常的做法

            XDocument doc = XDocument.Load(FILENAME);
            XElement node = doc.Root;
            XNamespace xNs = node.GetDefaultNamespace();

            XElement node2 = doc.Descendants().Where(x => x.Name.LocalName == "Node2").FirstOrDefault();
            XNamespace x2Ns = node2.GetDefaultNamespace();