我的是关于XML解析实践的一般问题.
假设我们有一个XML文档,我们使用XPath从该文档中获取一些节点:
XMLNode node1=XMLDoc.SelectSingleNode("/SomeNode/SomeOtherNode");
Run Code Online (Sandbox Code Playgroud)
现在n包含SomeOtherNode的数据.直观地说,我希望以下代码行:
XMLNode node2=XMLDoc.SelectSingleNode("/Child");
Run Code Online (Sandbox Code Playgroud)
使用名为"Child"的node1的子节点填充node2.但遗憾的是,它并没有这样的方式.XPath搜索从文档的根开始,而不是从调用它的XMLNode对象开始.有没有办法让它以"直观"的方式工作?这对于递归或面向对象的解析方法来说是方便的.
我尝试过使用XMLPathNavigator对象,但它的工作方式相同.似乎我可以将XMLDocumentFragment的内部文本设置为给定节点的内部文本,但这似乎是一种低效的数据重复.
有任何想法吗?
XMLNode node2 = XMLDoc.SelectSingleNode("/Child");
Run Code Online (Sandbox Code Playgroud)
这将从根(/)中选择名为"Child"的元素.请注意,您正在对XMLDoc应用调用,而不是在node1 上应用调用,因此它将相对于文档的根目录.我想你想要的是:
XMLNode node2 = node1.SelectSingleNode("Child"); // edit: removed slash
Run Code Online (Sandbox Code Playgroud)
哪个是相对于先前选择的节点的XPath,而不是文档根.
或者,您可以这样做:
XMLNode node = XMLDoc.SelectSingleNode("/SomeNode/SomeOtherNode/Child")
Run Code Online (Sandbox Code Playgroud)
这将直接选择子节点.
| 归档时间: |
|
| 查看次数: |
4321 次 |
| 最近记录: |