XML DOM中缺少节点——一个简单的示例
Missing nodes in XML DOM - simple example
XML表应该如何呈现
由于.XML文档在UNIT 3中缺少QUANTITY的节点,因此表不会呈现。
如何跳过XMLDOM中丢失的节点
XML文档(example.XML)
<?xml version="1.0" encoding="UTF-8"?>
<CUSTOMER_ORDER>
<UNIT>
<ID>Unit 1</ID>
<QUANTITY>45</QUANTITY>
<PRICE>25.99</PRICE>
</UNIT>
<UNIT>
<ID>Unit 2</ID>
<QUANTITY>209</QUANTITY>
<PRICE>9.95</PRICE>
</UNIT>
<UNIT>
<ID>Unit 3</ID> <!-- The QUANTITY node for Unit 3 is missing -->
<PRICE>14.99</PRICE>
</UNIT>
<UNIT>
<ID>Unit 4</ID>
<QUANTITY>156</QUANTITY>
<PRICE>35.88</PRICE>
</UNIT>
<UNIT>
<ID>Unit 5</ID>
<QUANTITY>25</QUANTITY>
<PRICE>199.00</PRICE>
</UNIT>
</CUSTOMER_ORDER>
这是XML DOM(带HTML)
<!DOCTYPE html>
<html>
<style>
table,th,td {
border : 2px solid black;
border-collapse: collapse;
}
th,td {
padding: 5px;
}
</style>
<body>
<body onload="loadXMLDoc()">
<table id="test"></table>
<script>
function loadXMLDoc() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
testFunction(xmlhttp);
}
};
xmlhttp.open("GET", "example.xml", true);
xmlhttp.send();
}
function testFunction(xml) {
var table="<tr><th>Unit</th><th>Price</th><th>Quantity</th></tr>";
var xmlDoc = xml.responseXML;
var i;
var y = xmlDoc.getElementsByTagName("UNIT");
for (i = 0; i < y.length; i++)
{
var u = y[i].getElementsByTagName("ID")[0].childNodes[0].nodeValue;
var p = y[i].getElementsByTagName("PRICE")[0].childNodes[0].nodeValue;
var q = y[i].getElementsByTagName("QUANTITY")[0].childNodes[0].nodeValue;
table += "<tr><td>" +
u + // Unit ID column
"</td><td>" +
p + // PRICE column
"</td><td>" +
q + // QUANTITY column
"</td></tr>";
}
document.getElementById("test").innerHTML = table;
}
</script>
</body>
</html>
就像@Pointy说的那样,在设置q之前检查是否有数量。如果quantity丢失,则将默认值设置为1或您希望的任何值。
替换此:
var q = y[i].getElementsByTagName("QUANTITY")[0].childNodes[0].nodeValue;
带有:
var qElem = y[i].getElementsByTagName("QUANTITY"); //Get quantity elems
var q = (qElem.length > 0) ? qElem[0].childNodes[0].nodeValue : 1; //Check if there is anything in qElem if not set q to 1
这应该行得通。
相关文章:
- Moment/Jquery-一个简单时间线的愚蠢问题
- 问题用moment JS制作一个简单的时间表
- 测试一个简单的javascript按钮
- 用Jquery map和moment js制作一个简单的时间线
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 调试一个简单的jQuery函数;想知道是否与其他代码冲突
- 一个简单的粘性头jQuery脚本的问题
- Sencha Touch使一个简单的按钮工作
- html表单,它有文本和表,现在我想在一个简单的文本文件中保存和检索数据,如何实现它
- 如何在Javascript中定义一个简单的自动重启倒计时
- 如何使一个简单的HTML文件成为wordpress中可用的页面
- 如何用D3添加一个简单的圆弧
- angularjs做一个简单的倒计时
- 创建一个简单的处理 p5.js 库
- 是否有一个简单的 JQuery 过程来替换页面上每段内部文本的字符串
- 如何在构造函数中创建一个简单的DOM元素,并在调用时将其附加到元素中
- 是否可以将PHP的一个简单片段重新编码为javascript
- 尝试创建一个简单的求和计算器
- 如何使用jquery添加一个简单的转换
- 正在寻找一个简单的JavaScriptHTMLGUI构建器,我可以将其嵌入到我的网站中