如何获取带命名空间的属性?

时间:2015-06-24 07:03:10

标签: c# .net xml linq

<?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>

我正在尝试阅读“xsi:Attribute”属性;代码是这样的:

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

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

它在最后一行抛出“Sequence contains no elements”异常。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您需要使用实际的命名空间,而不是"xsi",这只是XML文件本身中对真实命名空间的本地查找:

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

答案 1 :(得分:0)

试试这个(我相信它更通用):

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