DTD 验证
现代浏览器都内置了可根据某个 DTD 来验证 XML
是否合规的功能
通过 XML 解析器进行验证
当我们试图打开某个 XML 文档时,XML 解析器有可能会产生错误。通过访问 parseError
对象,就可以得到引起错误的确切代码、文本甚至所在的行
load() 方法用于加载文件,而 loadXML() 方法用来加载字符串
<h3>This demonstrates a parser error:</h3> <script> var xmldoc = null; function loadxml(filename) { if (window.ActiveXObject) { xmldoc = new ActiveXObject("Microsoft.XMLDOM"); xmldoc.async = false; xmlDoc.validateOnParse="true" xmldoc.load(filename); } else if (document.implementation && document.implementation.createDocument) { var xmlhttp = new window.XMLHttpRequest(); xmlhttp.open("get", filename, false); xmlhttp.send(null); var parser = new DOMParser(); var xmldoc = parser.parseFromString(xmlhttp.responseText, "application/xml"); console.log(xmldoc.parseError); } else { xmldoc = null; } return xmldoc; } xmldoc = loadxml("/static/exam/dtde/note_dtd_error.xml") document.write("<br />Error Code: ") document.write(xmldoc.parseError.errorCode) document.write("<br />Error Reason: ") document.write(xmldoc.parseError.reason) document.write("<br />Error Line: ") document.write(xmldoc.parseError.line) </script>
建议使用 Internet Explorer 浏览器测试,webkit 类浏览器还没找到解决方案
运行范例 或者 查看 note_dtd_error XML 文件
关闭验证
通过把 XML 解析器的 validateOnParse 设置为 "false",就可以关闭验证。
<h3>This demonstrates a parser error:</h3> <script> var xmldoc = null; function loadxml(filename) { if (window.ActiveXObject) { xmldoc = new ActiveXObject("Microsoft.XMLDOM"); xmldoc.async = false; xmlDoc.validateOnParse="false" xmldoc.load(filename); } else if (document.implementation && document.implementation.createDocument) { var xmlhttp = new window.XMLHttpRequest(); xmlhttp.open("get", filename, false); xmlhttp.send(null); var parser = new DOMParser(); var xmldoc = parser.parseFromString(xmlhttp.responseText, "application/xml"); console.log(xmldoc.parseError); } else { xmldoc = null; } return xmldoc; } xmldoc = loadxml("/static/exam/dtde/note_dtd_error.xml") document.write("<br />Error Code: ") document.write(xmldoc.parseError.errorCode) document.write("<br />Error Reason: ") document.write(xmldoc.parseError.reason) document.write("<br />Error Line: ") document.write(xmldoc.parseError.line) </script>
建议使用 Internet Explorer 浏览器测试,webkit 类浏览器还没找到解决方案
运行范例 或者 查看 note_dtd_error XML 文件
通用的 XML 验证器
你可以使用 XML 验证器 验证任何 XML 文件
parseError 对象
可以在我们的《XML DOM 教程》中阅读更多有关 parseError 对象的信息