c# - 无法选择 XML 文档中的节点

标签 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

但是没有任何作用。我没有收到任何错误。返回的结果是一个空集!

最佳答案

您的 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欲了解更多信息。

关于c# - 无法选择 XML 文档中的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232720/

相关文章:

python - 使用 scrapy 在表中查找正确的数据

html - 如何在 xpath 中获取选项的值而不是显示值?

python - 为什么我的 linkExtractor 在 scrapy 蜘蛛中伪装成不抓取允许的链接?

.net-4.0 - 如何将标记化参数添加到 web.config 文件中,以便它显示在 SetParameters.xml 中?

c# - C# 和 XML 中的有理数

c# - .NET (C#) 事件 - 自定义 EventArgs 问题

Windows 窗体的 C# 金融图表库?

c# - 如何将多个线程同步到一个公共(public)点

当 UseLayoutRounding ="True"时,WPF 陷入无限循环

c# - 在不指定尽可能多的类型的情况下调用通用扩展方法