如何获取名称空间的节点值';xsi:type';从xml数据

本文关键字:xsi type 数据 xml 节点 获取 何获取 空间 | 更新日期: 2023-09-27 18:00:01

我有一些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"answers"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>

如何获取名称空间的节点值';xsi:type';从xml数据

假设您只想要具有该类型属性的第一个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";