user626528
user626528

Reputation: 14417

How do I get an attribute with namespace?

<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Element xsi:Attribute="Test"></Element>
</Root>

I'm trying to read the "xsi:Attribute" attribute; the code is like this:

    var doc = XDocument.Load(new StringReader(xmlText));

    var node = doc.Root.Descendants().First();
    XNamespace myNamespace = "xsi";
    var attribute = node.Attributes(myNamespace + "Attribute").First();

It throws a "Sequence contains no elements" exception in the last line. What am I doing wrong?

Upvotes: 1

Views: 95

Answers (2)

cnom
cnom

Reputation: 3241

Try this (I believe its more generic):

XNamespace myNamespace = doc.Root.GetNamespaceOfPrefix("xsi");

Upvotes: 0

dbc
dbc

Reputation: 117115

You need to use the actual namespace, not "xsi", which is just a local lookup within the XML file itself for the real namespace:

        XNamespace myNamespace = "http://www.w3.org/2001/XMLSchema-instance";

Upvotes: 2

Related Questions