Я использую обычный JavaScript для анализа xml результата, используя DOMParser
. Я хочу перебрать определенные узлы и выполнить некоторую обработку каждого из них.
Проблема в том, что после получения рассматриваемых узлов через childNodes
я не могу выполнить оценку XPath на этих узлах. Нужно ли как-то снова приводить узлы в xml? Или, может быть, использовать другую функцию?
У меня есть некоторый опыт работы с xpath на SQL Сервере, но не на 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);
};
};