0

当存在于文档顶部时,我在使用 JScript 评估 Windows 脚本主机中的 XPath 表达式时遇到问题。当我删除 DOCTYPE 解析不会中断。这是我用来解析和加载 xml 的代码示例。有没有办法在不删除 DOCTYPE 声明的情况下解析这种 XML。

我不想在处理时删除 DOCTYPE。解决方案可能是使用正则表达式删除 DOCTYPE, <!DOCTYPE.*?>/gm;但我不想要这样的解决方案。

var XmlDocument;
    try {
        XmlDocument = new ActiveXObject("msxml2.DOMDocument.6.0");
        XmlDocument.async = false;
        XmlDocument.resolveExternals = false;
        XmlDocument.validateOnParse = false;
    } catch(e) {
        if(debug == true)
            WScript.echo("***ERROR while creating DOM Object: " + e.description);
    }
    // Load an XML file into the DOM instance
    try {
        XmlDocument.load(filePath);
    } catch(e) {
        if(debug == true)
            WScript.echo("***ERROR LOADING FILE: " + e.description);
    }
    var Node;
    try {
        Node = XmlDocument.selectSingleNode("//metadata/url");
    } catch(e) {
        if(debug == true)
            WScript.echo("***ERROR RESOLVING NODE: " + e.description);
    }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rightinclude SYSTEM "http://localhost/iw/aa.dtd">
<a>
    <b>
        <c>/someurl.html</c>
    </b>
</a>
4

2 回答 2

0

您是否在 DOCTYPE 元素关闭时尝试过 - 在这种情况下,某些解析器会获取文档。

例如:

<!DOCTYPE rightinclude SYSTEM "http://localhost/iw/aa.dtd" />
于 2011-08-02T08:47:29.173 回答
0

无需修改 XML 文件中的任何内容,而是使用这种方式来解析您的文件,一切都会好起来的。

这是一个链接,其中包含有关以下内容的描述和详细信息:

  • Java XPath 解析器
  • 解析 XML 文档
  • 查询 XML 文档
  • 创建 XML 文档
  • 修改 XML 文档

干杯;-)

于 2017-04-18T22:38:10.210 回答