[英]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,我想找到“元素”標簽(並不總是在同一位置),然后遍歷其所有子元素(“ item” N)並收集每個鍵/字符串對(例如“ name = foo”)
我已經嘗試使用DOMReader和Xpath通過多種方式來做到這一點,但是還沒有完全正確。
誰能告訴我如何做到最好?
(這看起來不像我所見過的其他XML,所以也許這就是為什么我在發現的示例中使用該XML時遇到了麻煩,但是正如我所說的,它是傳統的,我無法控制它)。
非常感謝。
我不能完全確定“不是總是在同一地方”是什么意思,如果您能詳細說明一下,我可能會提供更好的答案。 但是,如果可以將“元素”及其子元素(在您的示例中,“ ItemN”不是子元素,而是同級元素)嵌套在一起,則可以按如下方式僅搜索文本內容:
//*[contains(text(), 'elements')]/following-sibling::map/key[contains(text(), 'item1')]/following-sibling::map[1]
如果您要查找的子節點實際上是您示例中的下一個直接同級節點,那么這將為您提供所需的對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.