Xdocument-读取带前缀的属性值
本文关键字:属性 前缀 读取 Xdocument- | 更新日期: 2023-09-27 18:19:54
很容易找到Xdocument属性的值,但我们如何找到前缀/Namespace的属性。
XML代码
<label:label xlink:type="resource" xlink:label="something" xlink:lang="en" xlink:id="res_4">My value</label:label>
我正在尝试读取属性值xlink:Id(其中p是XElement)
p => p.Attribute("xlink:id").Value
这根本不起作用。
假设您在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
类:
XName.Get("id", XLinkNamespaceName)
对于XLinkNamespaceName
,是前缀为xlink
的命名空间。
要从前缀中获取名称空间,可以使用:XElement.GetNamespaceOfPrefix()
。
p => p.Attribute(p.GetNamespaceOfPrefix("xlink") + "id").Value
但我建议您不要在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>