У меня большой набор данных XML, из которого мне нужны только определенные значения. В частности, мне нужно сообщение об ошибке подтверждения сценария jmeter.
Вот мой XML, желаемый результат - таблица с 2 строками. В первой строке 3 столбца с сообщением об ошибке, во второй строке 3 столбца с нулем:
<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
<httpSample ts="1555683457534" lb="What is cocktail?">
<assertionResult>
<name>Intent</name>
<failure>true</failure>
<error>false</error>
<failureMessage>ERROR: THIS IS THE TEXT I NEED IN THE TABLE</failureMessage>
</assertionResult>
<assertionResult>
<name>Input</name>
<failure>true</failure>
<error>false</error>
<failureMessage>ERROR: THIS IS THE TEXT I NEED IN THE TABLE</failureMessage>
</assertionResult>
<assertionResult>
<name>Entity</name>
<failure>true</failure>
<error>false</error>
<failureMessage>ERROR: THIS IS THE TEXT I NEED IN THE TABLE</failureMessage>
</assertionResult>
</httpSample>
<httpSample ts="1555683467885" lb="What is coconut?">
<assertionResult>
<name>Intent</name>
<failure>false</failure>
<error>false</error>
<failureMessage></failureMessage>
</assertionResult>
<assertionResult>
<name>Input</name>
<failure>false</failure>
<error>false</error>
<failureMessage></failureMessage>
</assertionResult>
<assertionResult>
<name>Entity</name>
<failure>false</failure>
<error>false</error>
<failureMessage></failureMessage>
</assertionResult>
</httpSample>
</testResults>
Я работал над примером из W3Schools, но, поскольку моя структура XML отличается, я пытался изменить ее в соответствии со своими потребностями.
Моя проблема в том, что в каждой ячейке моей HTML-таблицы указано «null», когда мне нужно дать значение узла failureMessage
. Поэтому я считаю, что я получаю значения XML неправильно (в цикле for). У меня есть некоторый опыт работы с Xpath, но я не могу получить значение узла через Javascript / HTML.
Вот мой HTML / Javascript
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<style>
table,th,td {
border : 1px solid black;
border-collapse: collapse;
}
th,td {
padding: 5px;
}
</style>
</head>
<body>
<button type="button" onclick="loadXMLDoc()">Get my results</button>
<br><br>
<table id="demo"></table>
<script>
function loadXMLDoc() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xmlhttp.open("GET", "Assertion_Results.xml", true);
xmlhttp.send();
}
function myFunction(xml) {
var i;
var xmlDoc = xml.responseXML;
var table="<tr><th>Intent</th><th>Input</th><th>Entity</th></tr>";
var x = xmlDoc.getElementsByTagName("httpSample");
for (i = 0; i <x.length; i++) {
table += "<tr><td>" +
x[i].getElementsByTagName("assertionResult")[0].childNodes[3].nodeValue +
"</td><td>" +
x[i].getElementsByTagName("assertionResult")[1].childNodes[3].nodeValue +
"</td><td>"+
x[i].getElementsByTagName("assertionResult")[2].childNodes[3].nodeValue +
"</td></tr>";
}
document.getElementById("demo").innerHTML = table;
}
</script>
</body>
</html>
Извините, если это был многословный вопрос, который должен быть простым
TL; DR: Как мне получить отдельные failureMessage
поля из моего XML?