提问人:jsky 提问时间:1/2/2021 最后编辑:jsky 更新时间:1/3/2021 访问量:222
XMLHTTP 请求未解析 XML 文件
XMLHTTP request not parsing XML file
问:
我试图使用一些 xml 并基于此示例在 xhtml 中提供它,但我得到:
错误:
XML Parsing Error: not well-formed
...f5r.xhtml
Line Number 16, Column 37:
if (this.readyState == 4 && this.status == 200){
------------------------------------^
f5r.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<folio name="f5r" wordCount="56" width="1067" height="1500">
<word index="0" x="131" y="202" width="70" height="49">hello</word>
<word index="1" x="212" y="198" width="62" height="65">world</word>
</folio>
f5r.xhtml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/TR/xhtml1" xml:lang="en" lang="en">
<head>
<?xml-stylesheet href="../../vms.css"?>
<script src="../../public/javascripts/jquery-migrate-1.4.1.min.js"></script>
<script>
function loadXMLDoc() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200){
myFunction(this);
}
};
xmlhttp.open("GET", "f5r.xml", true);
xmlhttp.send();
}
function myFunction(xml) {
var x, i, xmlDoc, txt;
xmlDoc = xml.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("folio");
for (i = 0; i< x.length; i++) {
txt += x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("folio").innerHTML = txt;
}
</script>
</head>
<body onload="loadXMLDoc()">
<img class="foliophoto" id="f5r_lg"/>
<div class="folios">
<p class="folio">
<!-- <xml src="f5r.xml"></xml> -->
</p>
</div>
</body>
</html>
问题可能出在 JQuery 没有在本地加载,但我不确定也不确定为什么 JQ 不能在本地工作,但我过去曾遇到过这个问题。
更新:区分大小写不是问题。“folio”也不起作用。
答:
0赞
kjhughes
1/2/2021
#1
在解析的字符数据中,应以实体引用(如 .&
&
标准解决方案是将 JavaScript 包装在一个部分中,这样就不会被解释为标记,并使用 JavaScript 注释,以便 JavaScript 忽略分隔符:CDATA
&&
CDATA
<script>
//<![CDATA[
JavaScript code here
//]]>
</script>
评论
0赞
jsky
1/2/2021
摆脱了错误,但只是将脚本解释为数据和浏览器将脚本打印到屏幕上。function loadXMLDoc() { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200){ myFunction(this); } }; xmlhttp.open("GET", "f5r.xml", true); xmlhttp.send(); } function myFunction(xml) { var x, i, xmlDoc, txt; xmlDoc = xml.responseXML; txt = ""; x = xmlDoc.getElementsByTagName("FOLIO"); for (i = 0; i< x.length; i++) { txt += x[i].childNodes[0].nodeValue + "<br>"; } document.getElementById("folio").innerHTML = txt; }
0赞
jsky
1/2/2021
即 DOM 加载<script>cdata-section</script>
0赞
jsky
1/2/2021
听起来不错。但仍然只是将所有 JS 与 // 打印到屏幕上,不会将数据放入 <p>。顺便说一句,当我尝试使用 jQuery 时,甚至只是 console.log(“hello”),它只是打印到屏幕上而不是控制台。我的 JS 可能有问题......
0赞
jsky
1/2/2021
在转义了 & 符号并封装在 CDATA 标签中后,Safari 给了我一个可能比 Firefox 更有用的错误。这似乎与(这个)[apple.stackexchange.com/questions/361245/...有关,这可能是因为我的文件在外部设备上。(kCFErrorDomainCFNetwork error 1.)" (kCFErrorDomainCFNetwork:1)
0赞
jsky
1/2/2021
实际上它只做了一次,它现在显示相同的 XML HTML 树,但在我希望注入它的段落中没有数据。不知道为什么会出现这个错误,但我可以尝试将其移动到我的主驱动器上。
评论
getElementsByTagName("word")
getElementsByTagName("folio")
http://www.w3.org/1999/xhtml
http://www.w3.org/TR/xhtml1
&&
</br>

<word>
<folio>
&&