使用XPath使用JavaScript在XML文件中的子节点上进行迭代
Iterating over child nodes in XML file with JavaScript using XPath
给定一个形式为的遗留输入XML文件
<?xml version="1.0" ?>
<data>
<map>
<key>title</key>
<string>A Title Here</string>
<key>description</key>
<string>Description goes here</string>
<key>elements</key>
<map>
<key>item1</key>
<map>
<key>name</key>
<string>foo</string>
<key>url</key>
<string>http://foo.com</string>
</map>
<key>item2</key>
<map>
<key>name</key>
<string>bar</string>
<key>url</key>
<string>http://bar.com</string>
</map>
<key>item3</key>
<map>
<key>name</key>
<string>flasm</string>
<key>url</key>
<string>http://flasm.com</string>
</map>
</map>
</map>
使用Javascript,我想找到"elements"标签(不总是在同一个地方),然后迭代它的所有子标签("item"N),并为每个标签收集密钥/字符串对(例如"name=foo")
我已经尝试过使用DOMReader和Xpath的多种方法,但都没能完全正确。
有人能告诉我如何最好地做到这一点吗?
(这看起来不像我见过的其他XML,所以这可能就是我在发现的示例中使用它时遇到困难的原因,但正如我所说,这是遗留问题,我无法控制它)。
非常感谢。
我不完全确定你所说的"不总是在同一个地方"是什么意思,如果你能详细说明,我可能会提供更好的答案。但是,如果"elements"及其子项(在您的示例中,"ItemN"不是子项,而是兄弟项)可以以不同的方式嵌套,则您可以仅通过以下文本内容进行搜索:
//*[contains(text(), 'elements')]/following-sibling::map/key[contains(text(), 'item1')]/following-sibling::map[1]
如果您要查找的子节点实际上是您的示例中的下一个直接同级节点,那么这将为您提供要查找的对。
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- 仅使用某些子节点访问xml中父节点的子节点
- 难以获取使用属性选择的节点的子节点
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 使用jquery检索父节点的子节点
- 使用 JavaScript 从 XML 中删除子节点
- 使用 jQuery 解析 JSON 子节点
- 如何使用 JavaScript 遍历 XML 节点和子节点
- 使用XPath使用JavaScript在XML文件中的子节点上进行迭代
- 使用javascript使用HTML搜索确切的子节点
- 使用d3树映射可以在点击父节点到子节点时转到子节点
- 如何使用jquery删除树视图子节点
- 使用 jQuery 显示/隐藏子节点
- 使用Internet Explorer的子节点不工作
- 如何使用此选择器查找直接子节点
- 使用data-*来设置内部子节点的占位符
- 如何将事件传递给子节点元素而不使用
- 使用jquery遍历xml的子节点
- 如何使用" jstreet "附加json变量作为子节点Jquery插件-没有ajax
- D3树布局-强制子节点使用可用空间