Reputation: 25
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
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