如何从xml数据中获取名字space'xsi:type'的节点值?
How to get the node value of the name space 'xsi:type' from xml data?
我将一些 xml 数据放入 XDocument 中,例如 'xDoc',格式如下
<uketd_dc:uketddc xsi:schemaLocation ="http://naca.central.cranfield.ac.uk/ethos-oai/2.0/ http://naca.central.cranfield.ac.uk/ethos-oai/2.0/uketd_dc.xsd">
<dc:identifier>
http://www.google.com
</dc:identifier>
<dc:language>
en
</dc:language>
<dc:name>
Some name
</dc:name>
<dc:identifier xsi:type="dcterms:URI">
http://zzzz.com/zz.pdf?sequence=1
</dc:identifier>
</uketd_dc:uketddc>
我可以使用以下查询获取 'dc:language' 和 'dc:name' 节点的值
var values= from e in xDoc.Descendants(uketd_dc + "uketddc")
select new Item(
e.Element(dc + "language").Value,
e.Element(dc + "name").Value
);
问题是如何获取最后一个节点的值?
<dc:identifier xsi:type="dcterms:URI">
http://zzzz.com/zz.pdf?sequence=1
</dc:identifier>
假设您只想要第一个 identifier
具有该类型属性的值:
var uri = (string)e.Elements(dc + "identifier")
.Where(e => (string)e.Attribute(xsi + "type") == "dcterms:URI")
.FirstOrDefault()
其中 xsi
是前缀 xsi
的命名空间,应该 如下所示:
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
我将一些 xml 数据放入 XDocument 中,例如 'xDoc',格式如下
<uketd_dc:uketddc xsi:schemaLocation ="http://naca.central.cranfield.ac.uk/ethos-oai/2.0/ http://naca.central.cranfield.ac.uk/ethos-oai/2.0/uketd_dc.xsd">
<dc:identifier>
http://www.google.com
</dc:identifier>
<dc:language>
en
</dc:language>
<dc:name>
Some name
</dc:name>
<dc:identifier xsi:type="dcterms:URI">
http://zzzz.com/zz.pdf?sequence=1
</dc:identifier>
</uketd_dc:uketddc>
我可以使用以下查询获取 'dc:language' 和 'dc:name' 节点的值
var values= from e in xDoc.Descendants(uketd_dc + "uketddc")
select new Item(
e.Element(dc + "language").Value,
e.Element(dc + "name").Value
);
问题是如何获取最后一个节点的值?
<dc:identifier xsi:type="dcterms:URI">
http://zzzz.com/zz.pdf?sequence=1
</dc:identifier>
假设您只想要第一个 identifier
具有该类型属性的值:
var uri = (string)e.Elements(dc + "identifier")
.Where(e => (string)e.Attribute(xsi + "type") == "dcterms:URI")
.FirstOrDefault()
其中 xsi
是前缀 xsi
的命名空间,应该 如下所示:
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";