使用 XPath、C# 解析 XML 文档

2024-01-02

因此,我尝试使用 System.XML 使用 C# 解析以下 XML 文档:

<root xmlns:n="http://www.w3.org/TR/html4/">
 <n:node>
  <n:node>
   data
  </n:node>
 </n:node>
 <n:node>
  <n:node>
   data
  </n:node>
 </n:node>
</root>

每一篇带有名称空间的 XPath 论文都告诉我要执行以下操作:

XmlNamespaceManager mgr = new XmlNamespaceManager(xmlDoc.NameTable);
mgr.AddNamespace("n", "http://www.w3.org/1999/XSL/Transform");

添加上面的代码后,查询

xmlDoc.SelectNodes("/root/n:node", mgr);

运行正常,但没有返回任何内容。下列:

xmlDoc.SelectNodes("/root/node", mgr);

如果我修改 XML 文件并删除命名空间,则会返回两个节点,因此看起来其他所有内容都设置正确。知道为什么它不适用于命名空间吗?

多谢!


如前所述,重要的是命名空间的 URI,而不是前缀。

鉴于您的 xml,您可以使用以下内容:

mgr.AddNamespace( "someOtherPrefix", "http://www.w3.org/TR/html4/" );
var nodes = xmlDoc.SelectNodes( "/root/someOtherPrefix:node", mgr );

这将为您提供所需的数据。一旦掌握了这个概念,事情就会变得更容易,特别是当您使用默认名称空间(源 xml 中没有前缀)时,因为您立即知道可以为每个 URI 分配一个前缀,并强烈引用您喜欢的文档的任何部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XPath、C# 解析 XML 文档 的相关文章

随机推荐

  • 如何让 mongo 映射器在 Rails 4 中生成 config/mongo.yml 文件

    我正在尝试使用 Mongo Mapper gem 制作一个 Rails 应用程序 我按照 Mongo Mapper 文档中的说明进行操作 链接在这里 Mongo 映射器文档 http mongomapper com documentatio
  • 可排序 + 可拖动演示 - 如何访问放置的项目?

    我有一个可排序的列表 当一个新项目 从可拖动的项目 放入列表中时 我想访问它以对其执行一些操作 这就是我所拥有的 mySortableList sortable receive function event ui alert this is
  • 在 Objective C 类别中使用 Super?

    我想重写 Objective C 类中的一个方法 但我没有源代码 我已经研究过了 看来类别应该允许我这样做 但我想在我的新方法中使用旧方法的结果 使用 super 来获取旧方法的结果 每当我尝试这个时 我的方法都会被调用 但 超级 为零 知
  • Google 脚本,根据上次修改日期删除文件夹中的文件

    我正在尝试创建一个脚本 该脚本每周一次通过共享驱动器运行 并删除过去 90 天内未修改的任何内容 我在这里发现了一些脚本似乎没有按照我的预期工作 我目前拥有的脚本如下 但由于某种原因它似乎不起作用 但似乎应该起作用 它似乎识别了文件 但似乎
  • eval 有什么作用以及为什么它是邪恶的? [复制]

    这个问题在这里已经有答案了 var myString x myObject x 10 value eval myObject myString alert value alert myObject myString 评估是邪恶的 http
  • Excel 多行条件色标

    我有一个电子表格 显示一系列产品的库存数据 我每天都有一个专栏 其中的值显示我的库存水平将如何随着时间的推移而减少 我想使用色标来轻松查看某些产品的库存何时会变少 我的量表的最小值 中值和最大值基于不同列中的值 并且每个产品的值都不同 根据
  • 使用 java 获取便携式设备

    我正在尝试访问设备中的一些文件 具有 Windows CE 其中的应用程序 显示为便携式设备在 windows 7 中使用 java applet 我的设备路径是这样的 Computer Attari s Device myfile txt
  • Doctest 无法识别 __future__.division

    我写了以下文档测试x doctest This is something gt gt gt x 3 4 foo bar something else gt gt gt from future import division gt gt gt
  • 定时器和线程的问题

    我是一个通过实例学习的 C 程序员 水平不是很先进 这就是为什么这个问题完全难住了我 无论互联网上有多少信息 我本质上是在创建一个程序 该程序在计时器上重复轮询网站以获取一些信息 在此过程中 将创建一个 WebBrowser 控件来导航到信
  • Apple 登录时出现错误“Invalid_client”firebase android

    我们为 Apple 所做的一切 登录 在 Firebase 中 我们设置 service id keyID 私钥 团队 ID 在 Android 代码中 我们做了与文档相同的操作 尽管如此 我们仍然面临苹果的问题 以无效客户端身份登录 经过
  • 检查: git rebase 是否完成?

    这是 git rebase 的替代方案 https stackoverflow com questions 39603553 alternative to git rebase 39605048 noredirect 1 comment66
  • 在 Rust 测试中,如何使用 NEAR 协议检查帐户的状态(帐户余额)?

    在 Rust 测试中 如何检查帐户的状态 帐户余额 例如 我有这个辅助函数 fn set context account index usize is view bool deposit Amount let context VMConte
  • Icefaces 3.0.1 FileEntry:FileEntryListener 从未被调用

    1 1 IceFaces 3 0 1 和 JSF 2 1 并尝试与 ace fileentry 一起使用 我不明白为什么监听者永远不会被调用 甚至 IDE 也会向我发送警告 pruebaBean sampleListener 是未知属性 这
  • ASP.NET MVC 如何指定视图页面驻留在哪个文件夹?

    默认情况下 ASP NET MVC 引擎在以下文件夹中搜索视图页面 Views 控制器名称 动作 aspx Views Shared 动作 aspx 不过 我想将一些视图页面如下所示 Views 命名空间 Controller Name 动
  • com.mongodb.MongoTimeoutException:等待连接时 10000 毫秒后超时

    我以为这个问题已经被问过好几次了 但我不得不再次问一遍 因为为这个问题提供的解决方案并没有给我一个准确的答案来摆脱这个该死的错误 I use mongo java driver 2 12 4 and mongo jar当我尝试将文档插入数据
  • 布尔属性的单选按钮

    我有一个简单的布尔属性valid在我的对象中document并需要将其绑定到无线电输入 这是我到目前为止所拥有的
  • Visual Studio 2010 中的“浏览查找源”

    Visual Studio 2010 中何时启用 浏览查找源 见下文 另外 我想启用它 以便我可以浏览到已经下载的源代码 文件来自http referencesource microsoft com http referencesource
  • Bash:是否可以阻止 PID 被重复使用?

    是否可以阻止 PID 被重复使用 例如 如果我运行一份工作myjob在背景中myjob 并使用获取PIDPID 是否可以阻止 linux 系统重新使用该 PID 直到我检查该 PID 不再存在 进程已完成 换句话说 我想做类似的事情 myj
  • 使用 awk substr 获取最后一个字段

    我正在尝试使用awk给定文件的绝对路径来获取文件的名称 例如 当给定输入路径时 home parent child filename我想得到filename我努力了 awk F print 5 input 效果很好 然而 我正在硬编码 5如
  • 使用 XPath、C# 解析 XML 文档

    因此 我尝试使用 System XML 使用 C 解析以下 XML 文档