使用 ISBN 时出现 SAX 解析错误
SAX parse error while using ISBN
我正在使用 thymeleaf,我正在使用一个获取 ISBN 编号和获取图书数据的函数。我在在线编辑器中尝试了代码并且它工作正常但是当我在 Intellij
中使用相同的代码时
org.xml.sax.SAXParseException:实体名称必须紧跟实体引用中的“&”。
在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) ~[na:1.8.0_101]
在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) ~[na:1.8.0_101]
在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[na:1.8.0_101]
在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[na:1.8.0_101]
这是我的代码
HTML
<div class="input-field col s6 m6">
<input id="isbn" name="isbn" type="text" class="validate" />
<label for = "isbn">Enter ISBN Code</label>
</div>
<div class="input-field col s6 m6">
<button id="submitCode" class="btn waves-effect waves-light col m4" onclick="myFunction()" value="data">ISBN Data</button>
</div>
JavaScript代码
function myFunction()
{
var isbn = document.getElementById('isbn').value;
alert(isbn);
var xmlhttp = new XMLHttpRequest();
var url = "https://www.googleapis.com/books/v1/volumes?q=isbn:"+isbn;
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var x = JSON.parse(xmlhttp.responseText);
callback(x);
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function callback(x)
{
//do things with your data here
alert(JSON.stringify(x));
console.log(x);
}
Thymeleaf 需要有效 XML,并且在您的 javascript 中您有:
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
& 不是有效的 XML 字符,因此您需要像这样用 CDATA 包围 javascript:
<script>
// <![CDATA[
... javascript here ...
// ]]>
</script>
或者将它们替换为 &&
我正在使用 thymeleaf,我正在使用一个获取 ISBN 编号和获取图书数据的函数。我在在线编辑器中尝试了代码并且它工作正常但是当我在 Intellij
中使用相同的代码时org.xml.sax.SAXParseException:实体名称必须紧跟实体引用中的“&”。 在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) ~[na:1.8.0_101] 在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) ~[na:1.8.0_101] 在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[na:1.8.0_101] 在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[na:1.8.0_101]
这是我的代码 HTML
<div class="input-field col s6 m6">
<input id="isbn" name="isbn" type="text" class="validate" />
<label for = "isbn">Enter ISBN Code</label>
</div>
<div class="input-field col s6 m6">
<button id="submitCode" class="btn waves-effect waves-light col m4" onclick="myFunction()" value="data">ISBN Data</button>
</div>
JavaScript代码
function myFunction()
{
var isbn = document.getElementById('isbn').value;
alert(isbn);
var xmlhttp = new XMLHttpRequest();
var url = "https://www.googleapis.com/books/v1/volumes?q=isbn:"+isbn;
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var x = JSON.parse(xmlhttp.responseText);
callback(x);
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function callback(x)
{
//do things with your data here
alert(JSON.stringify(x));
console.log(x);
}
Thymeleaf 需要有效 XML,并且在您的 javascript 中您有:
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
& 不是有效的 XML 字符,因此您需要像这样用 CDATA 包围 javascript:
<script>
// <![CDATA[
... javascript here ...
// ]]>
</script>
或者将它们替换为 &&