I have this XML
<SENDERS VERSION="V3.0.4" xsi:noNamespaceSchemaLocation="SENDERS.xd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SECTION>
</SECTION>
</SENDERS>
I am trying to parse it and find the element SECTION with the xsi namespace using the following code
var xdoc = XDocument.Parse(myxml);
var ns = xdoc.Root.GetNamespaceOfPrefix("xsi");
var section = xdoc.Element(ns + "SECTION");
Usually I do it this way but this time section is always null. Am I doing something wrong?
I think you remember it wrong. Actually the <SECTION> element does not have any explicit namespace prefix so it can only have a default namespace (which is declared without prefix).
Because your XML does not declare any default namespace (e.g: xmlns=...). So your <SECTION> has no namespace, the working code should be like this:
var section = xdoc.Root.Element("SECTION");
Another problem is you need to use XDocument.Root.Element instead of XDocument.Element.