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