jacek.pietrzyk1
jacek.pietrzyk1

Reputation: 25

Getting an default namespace for nested XML element by (LINQ to XML)

Im trying to get default namespace for nested element. Part of my XML file is:

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

Part of my query code is (namespaces 'namespaceNode' and 'namespaceElement' are XNamespace objects:

    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 property gets the value of the element, but how can I read the namespace of this node to Xmlns property?

Upvotes: 0

Views: 419

Answers (1)

jdweng
jdweng

Reputation: 34431

This is how I normally do it

            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();

Upvotes: 0

Related Questions