无法在XML文档中选择节点

时间:2013-04-26 09:10:54

标签: c# xpath .net-4.0 linq-to-xml

我的XML文档是TEI XML Brown Corpus

中的 Corpus.xml 文件

我想选择文档中的每个s节点,这样我就可以迭代它们并提取数据。

问题在于无论我尝试哪种方法,我都无法选择s个节点!我试过了:

  • xml.Root.Descendants("s")
  • xml.Root.XPathSelectElements("s")
  • XPathDocument

但没有任何作用。我没有错。返回的结果是空集!

1 个答案:

答案 0 :(得分:2)

您的XML文档声明了名称空间:

<?xml version="1.0"?>
<teiCorpus xmlns="http://www.tei-c.org/ns/1.0" 
           xmlns:xi="http://www.w3.org/2001/XInclude">
  <!-- content -->
</teiCorpus>

因此,您应该使用XNamespace来选择元素:

var xdoc = XDocument.Load(path_to_xml);
XNamespace ns = "http://www.tei-c.org/ns/1.0";
var elements = xdoc.Descendants(ns + "s");

请查看Working with XML Namespaces以获取更多信息。