I would like to display XML data in table format, below is the code which I've written but it's not working. The data from XML is branched out and thus was not appearing completely earlier - but in my current code nothing is getting returned.
<!DOCTYPE html>
<html>
<style>
table,th,td {
border : 1px solid black;
border-collapse: collapse;
}
th,td {
padding: 5px;
}
th{
background-color:#BBB;
}
</style>
<body>
<p>Sample para component</p>
<button type="button" onclick="loadDoc()">Click me</button>
<br><br>
<table id="myTable"></table>
<script>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
};
xhttp.open("GET", "sample.xml", true);
xhttp.send();
}
function myFunction(xml) {
var a, b, c, d, e, f;
function smartValue1(root, tag) {
return (root.getElementsByTagName("InstructingOrgName").length &&
root.getElementsByTagName("InstructingOrgName")[0].childNodes.length &&
root.getElementsByTagName("InstructingOrgName")[0].childNodes[0].nodeValue
) || '';
}
function smartValue2(root, tag) {
return (root.getElementsByTagName("InstructingOrgCode").length &&
root.getElementsByTagName("InstructingOrgCode")[0].childNodes.length &&
root.getElementsByTagName("InstructingOrgCode")[0].childNodes[0].nodeValue
) || '';
}
function smartValue3(root, tag) {
for (c = 0; c <= document.getElementsByTagName("PortfolioName").length; c++) {
return (root.getElementsByTagName("PortfolioName").length &&
root.getElementsByTagName("PortfolioName")[c].childNodes.length &&
root.getElementsByTagName("PortfolioName")[c].childNodes[c].nodeValue
) || '';
}
}
function smartValue4(root, tag) {
for (d = 0; d <= document.getElementsByTagName("PortfolioCode").length; d++) {
return (root.getElementsByTagName("PortfolioCode").length &&
root.getElementsByTagName("PortfolioCode")[d].childNodes.length &&
root.getElementsByTagName("PortfolioCode")[d].childNodes[d].nodeValue
) || '';
}
}
function smartValue5(root, tag) {
for (e = 0; e <= document.getElementsByTagName("FundName").length; e++) {
return (root.getElementsByTagName("FundName").length &&
root.getElementsByTagName("FundName")[e].childNodes.length &&
root.getElementsByTagName("FundName")[e].childNodes[e].nodeValue
) || '';
}
}
function smartValue6(root, tag) {
for (f = 0; f <= document.getElementsByTagName("FundCode").length; f++) {
return (root.getElementsByTagName("FundCode").length &&
root.getElementsByTagName("FundCode")[f].childNodes.length &&
root.getElementsByTagName("FundCode")[f].childNodes[f].nodeValue
) || '';
}
}
var i;
var xmlDoc = xml.responseXML;
var xmlDoc1 = xml.responseXML;
var xmlDoc2 = xml.responseXML;
var table = "<tr><th>Instructing Org</th><th>Portfolio</th><th>Fund</th></tr>";
var x = xmlDoc.getElementsByTagName("ClientInvestmentInstruction");
var y = xmlDoc1.getElementsByTagName("Portfolio");
var z = xmlDoc2.getElementsByTagName("Fund");
for (i = 0; i < x.length; i++) {
table += "<tr><td>" +
smartValue1(x[i], "InstructingOrgName") +
" (" +
smartValue2(x[i], "InstructingOrgCode") +
") </td><td>" +
for (a = 0; a < y.length; y++) {
smartValue3(x[i], "PortfolioName") +
"  (" +
smartValue4(x[i], "PortfolioCode") +
") </td><td> " +
for (b = 0; b < z.length; z++) {
smartValue5(x[i], "FundName") +
" (" +
smartValue6(x[i], "FundCode") +
") </td></tr>"
}
}
}
document.getElementById("myTable").innerHTML = table;
}
</script>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<ClientInvestmentInstructionList>
<ClientInvestmentInstruction>
<InstructingOrgName>Sample A</InstructingOrgName>
<InstructingOrgCode>Sample A code</InstructingOrgCode>
<PortfolioList>
<Portfolio>
<PortfolioName>Sample A Child</PortfolioName>
<PortfolioCode>Sample A Child code</PortfolioCode>
<AuthorizeFundList>
<Fund>
<FundName>Sample A Penultimate</FundName>
<FundCode>Sample A Penultimate code</FundCode>
</Fund>
<Fund>
<FundName>Sample A1 Penultimate</FundName>
<FundCode>Sample A1 Penultimate code</FundCode>
</Fund>
</AuthorizeFundList>
</Portfolio>
<Portfolio>
<PortfolioName>Sample B Child</PortfolioName>
<PortfolioCode>Sample B Child code</PortfolioCode>
<AuthorizeFundList>
<Fund>
<FundName>Sample B Penultimate</FundName>
<FundCode>Sample B Penultimate code</FundCode>
</Fund>
<Fund>
<FundName>Sample B1 Penultimate</FundName>
<FundCode>Sample B1 Penultimate code</FundCode>
</Fund>
<Fund>
<FundName>Sample B2 Penultimate</FundName>
<FundCode>Sample B2 Penultimate code</FundCode>
</Fund>
</AuthorizeFundList>
</Portfolio>
<Portfolio>
<PortfolioName>Sample C Child</PortfolioName>
<PortfolioCode>Sample C Child code</PortfolioCode>
</Portfolio>
</PortfolioList>
</ClientInvestmentInstruction>
<ClientInvestmentInstruction>
<InstructingOrgName>Sample part 2</InstructingOrgName>
<InstructingOrgCode>Sample part 2 code</InstructingOrgCode>
<PortfolioList>
<Portfolio>
<PortfolioName>Sample part 2 child</PortfolioName>
<PortfolioCode>Sample part 2 child code</PortfolioCode>
<AuthorizeFundList>
<Fund>
<FundName>Sample part 2 penultimate</FundName>
<FundCode>Sample part 2 penultimate code</FundCode>
</Fund>
<Fund>
<FundName>Sample part 2a penultimate</FundName>
<FundCode>Sample part 2a penultimate code</FundCode>
</Fund>
</AuthorizeFundList>
</Portfolio>
<Portfolio>
<PortfolioName>Sample part 3 child</PortfolioName>
<PortfolioCode>Sample part 3 child code</PortfolioCode>
<AuthorizeFundList>
<Fund>
<FundName>Sample part 3 penultimate</FundName>
<FundCode>Sample part 3 penultimate code</FundCode>
</Fund>
<Fund>
<FundName>Sample part 3a penultimate</FundName>
<FundCode>Sample part 3a penultimate code</FundCode>
</Fund>
</AuthorizeFundList>
</Portfolio>
</PortfolioList>
</ClientInvestmentInstruction>
</ClientInvestmentInstructionList>
