C# Xdocument-读取带有前缀的属性值

C# Xdocument-读取带有前缀的属性值,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,很容易找到Xdocument属性的值,但如何找到带有前缀/名称空间的属性呢 XML代码 <label:label xlink:type="resource" xlink:label="something" xlink:lang="en" xlink:id="res_4">My value</label:label> 这根本不起作用。使用该类: 使用XLinkNamespaceName前缀为xlink的命名空间 要从前缀获取命名空间,可以使用: 但我建议您不要在C代码中

很容易找到Xdocument属性的值,但如何找到带有前缀/名称空间的属性呢

XML代码

 <label:label xlink:type="resource" xlink:label="something" xlink:lang="en" xlink:id="res_4">My value</label:label>
这根本不起作用。

使用该类:

使用
XLinkNamespaceName
前缀为
xlink
的命名空间

要从前缀获取命名空间,可以使用:

但我建议您不要在C代码中使用前缀,而是使用名称空间。的确

<myFile xmlns:myPrefix="http://www.tempUri.org/MyNamespace">
    <something myPrefix:myAttribute="myValue" />
</myFile>

“功能”等同于:

<myFile xmlns:dfgerge="http://www.tempUri.org/MyNamespace">
    <something dfgerge:myAttribute="myValue" />
</myFile>

假设您在XML中的某个位置声明了名称空间前缀:

xmlns:xlink="dummy.url"
您可以使用指向上述命名空间URI的
XNamespace
变量访问命名空间中的属性:

XNamespace xlink = "dummy.url";
.....
p => p.Attribute(xlink+"id").Value
//or simply cast the XAttribute to string 
//to avoid exception when the attribute not found in p
p => (string)p.Attribute(xlink+"id")

XName xVal=XName.Get(“id”、“xlink”);字符串val=xelem.Attribute(xVal.ToString()
这是正确的使用方法吗?@user2564977不,xlink是前缀,在您的文档中必须有xmlns:xlink=“…”其中。。。是名称空间。
<myFile xmlns:dfgerge="http://www.tempUri.org/MyNamespace">
    <something dfgerge:myAttribute="myValue" />
</myFile>
xmlns:xlink="dummy.url"
XNamespace xlink = "dummy.url";
.....
p => p.Attribute(xlink+"id").Value
//or simply cast the XAttribute to string 
//to avoid exception when the attribute not found in p
p => (string)p.Attribute(xlink+"id")