【发布时间】:2021-07-29 23:12:04
【问题描述】:
我试图在“application/xml”response.data 文档中获取给定元素层次结构的有序列表,我使用 Javascript 中的 DOM 解析器解析该文档。因此,表达式应该为每个没有 A 子级的 A 标记返回列表 ['Grand Parent','Parent','Target']。所以我将得到一个列表列表,其中内部列表的最后一个元素将是 xpath = '//*[local-name()="A"][not(.//*[local-name()="A"])]/*[local-name()="A-title"]' 但我不确定如何调整它以进入层次结构列表。
<A>
<A-title>Grand Parent</A-title>
<A>
<A-title>Parent</A-title>
<A>
<A-title>Target</A-title>
</A>
</A>
</A>
编辑:
axios.get('WMS_URL').then((r) => {
const parser = new DOMParser()
const dom = parser.parseFromString(r.data, 'application/xml')
let xpath = '//*[local-name()="A"][not(.//*[local-name()="A"])]/*[local-name()="A-title"]'
let xpath2 = 'ancestor-or-self::A/A-title'
var targets = dom.evaluate(xpath, dom, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
var targets2 = dom.evaluate(xpath2, targets, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
Array.from({ length: targets2.snapshotLength }, (_, index) => layerNames.push(targets2.snapshotItem(index).innerHTML))
【问题讨论】:
标签: javascript xml dom xpath dom-traversal