簡體   English   中英

使用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,我想找到“元素”標簽(並不總是在同一位置),然后遍歷其所有子元素(“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM