gpt4 book ai didi

javascript - 缺少 XML 节点

转载 作者:行者123 更新时间:2023-11-28 02:07:12 25 4
gpt4 key购买 nike

我有以下 XML 文件:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- Edited by XMLSpy® -->
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>
</note>

并使用以下 Javascript/HTML:

<html>

<body>
<h1>W3Schools Internal Note</h1>
<div>
<b>To:</b>
<span id="to"></span>
<br />
<b>From:</b>
<span id="from"></span>
<br />
<b>Message:</b>
<span id="message"></span>
</div>
<script type="text/javascript">
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "note.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
document.getElementById("to").innerHTML = xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
document.getElementById("from").innerHTML = xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
document.getElementById("message").innerHTML = xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>
</body>

</html>

这工作正常,但如果 XML 文件中的值之一没有值,例如 <from></from>那么其余的值将不会返回任何数据。

我有什么想法可以检测到这一点并继续前进,即使节点中没有任何值(value)?

最佳答案

如果 childNodes[0] 在其中任何一个上都不存在,则在尝试对其调用 nodeValue 时会出现错误。先测试是否存在:

// Get and store the nodes from the xml first
var toNode = xmlDoc.getElementsByTagName("to")[0];
var fromNode = xmlDoc.getElementsByTagName("from")[0];
var messageNode = xmlDoc.getElementsByTagName("message")[0];

// And only assign them if they actually have childNodes. Otherwise use an empty string
document.getElementById("to").innerHTML = toNode.childNodes.length ? toNode.childNodes[0].nodeValue : "";
document.getElementById("from").innerHTML = fromNode.childNodes.length ? fromNode.childNodes[0].nodeValue : "";
document.getElementById("message").innerHTML = messageNode.childNodes.length ? messageNode.childNodes[0].nodeValue : "";

关于javascript - 缺少 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10747452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com