【发布时间】:2023-03-24 23:40:01
【问题描述】:
我正在使用纯 JavaScript 使用 DOMParser 解析 xml 结果。我想遍历某些节点,并对每个节点进行一些处理。
问题是,在通过childNodes 获取相关节点后,我无法在这些节点上运行 XPath 评估。我是否必须以某种方式再次将节点转换为 xml?或者也许使用不同的功能?
我有一些在 SQL Server 中使用 xpath 的经验,但在 JavaScript 中没有,所以这可能是一个非常愚蠢的问题。
这是我的 xml
<result>
<entry>
<component typeCode="COMP">
<sequenceNumber value="1" />
<observation classCode="OBS" moodCode="DEF">
<code displayName="StartDate" code="CODE_041" />
<value xsi:type="TS" />
</observation>
</component>
<component typeCode="COMP">
<sequenceNumber value="2" />
<observation classCode="OBS" moodCode="DEF">
<code displayName="Amount" code="CODE_045" />
<value xsi:type="PQ" value="000000000000000.00" />
</observation>
</component>
</entry>
</result>
还有 javascript 代码
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmltext, "text/xml");
var ent = xmlDoc.getElementsByTagName("entry");
// get child nodes
var chil = ent[0].childNodes;
for (var c = 0; c < chil.length; c++) {
var nod = chil[c];
// component
if (nod.tagName == "component") {
// error "evaluate is not a function"
var field_code = nod.evaluate("/observation/code[@code]", nod, null, XPathResult.ANY_TYPE, null);
var field_name = nod.evaluate("/observation/code[@displayName]", nod, null, XPathResult.ANY_TYPE, null);
};
};
【问题讨论】:
标签: javascript xml xpath