C# Xdocument-读取带有前缀的属性值
很容易找到Xdocument属性的值,但如何找到带有前缀/名称空间的属性呢 XML代码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代码中
<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")