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

C# 如何获取名称空间的节点值';xsi:type';从xml数据?,c#,xml,asp.net-mvc-4,nodes,C#,Xml,Asp.net Mvc 4,Nodes,我将一些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 </d

我将一些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:identifier xsi:type="dcterms:URI">
http://zzzz.com/zz.pdf?sequence=1
</dc:identifier>

http://zzzz.com/zz.pdf?sequence=1

假定您只需要具有该类型属性的第一个
标识符的值:

 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";

如果您只使用
e.Element(dc+“identifier”)
,会发生什么
xsi:type
不会更改元素的名称空间…抱歉,忘了提及我还有一个名为“identifier”的节点,因此e.element(dc+“identifier”)返回它的值。那么你的意思是你想在xsi:type和元素名的基础上进行筛选吗?是的,完全正确。我该怎么做?首先,你应该编辑这个问题以澄清这一点,其次看看查尔斯给你的答案。。。
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";