c#无法提取具有xsd:schemaLocation属性的元素
请看下面几行XML代码。我的目标是提取c#无法提取具有xsd:schemaLocation属性的元素,c#,xml,xsd,C#,Xml,Xsd,请看下面几行XML代码。我的目标是提取interactior元素中的值: <HPRD3r xmlns="org:hprd:dtd:hprd3r"> <interactions> <entrySet xsi:schemaLocation="net:sf:psidev:mi http://psidev.sourceforge.net/mi/rel25/src/MIF25.xsd"> <interactionList>
interactior
元素中的值:
<HPRD3r xmlns="org:hprd:dtd:hprd3r">
<interactions>
<entrySet xsi:schemaLocation="net:sf:psidev:mi http://psidev.sourceforge.net/mi/rel25/src/MIF25.xsd">
<interactionList>
<interactor>
尽管存在“entrySet”,但以下内容始终返回null
:
root.Element(ns+"interactions").Element(ns+"entrySet");
另一方面,
root.Descendants(ns+"interactor");
不返回null
,但即使文件中有多个interactior
元素,也会给出一个零计数
问题似乎是entrySet
中的属性xsi:schemaLocation
。请有人给我解释一下上述问题背后的原因以及如何解决它们。
谢谢我用一种简单的方法:root.subjections().Where(x=>x.Name.LocalName==“interactitor”).FirstOrDefault();谢谢,它成功了。然而,我仍然对我的方法为什么不起作用感到困惑。知道吗?获取默认名称空间“interactior”。这会给你一个线索。不过,粘贴的文档可能有问题,可能与真实文档不同。上面的文档没有为
entrySet
及其子体定义任何新名称空间xsi:schemaLocation
本身不会添加任何默认的命名空间绑定。如果在真实文档中,entrySet
标记中有xmlns=“net:sf:psidev:mi”
,那么您确实需要使用适当的名称空间,而不是存储在ns
中的名称空间。谢谢大家。“interactor”确实有另一个默认名称空间,我完全没有看到entrySet标记中的xmlns。吸取教训!
root.Descendants(ns+"interactor");