2

我有以下问题:我有一个带有多个命名空间的 XML 文档 - 这是开始标记:

<?xml version="1.0" encoding="UTF-8"?>
<REQ-IF 
   xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd"
   xmlns:doors="http://www.ibm.com/rdm/doors/REQIF/xmlns/1.0"
   xmlns:reqif="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd"
   xmlns:reqif-common="http://www.prostep.org/reqif"
   xmlns:reqif-xhtml="http://www.w3.org/1999/xhtml"
   xmlns:rm="http://www.ibm.com/rm"
   xmlns:rm-reqif="http://www.ibm.com/rm/reqif"
   xmlns:xhtml="http://www.w3.org/1999/xhtml"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

如您所见,有许多命名空间。我使用 Xerces 作为解析器。问题是解析器试图从它不知道的名称空间访问 URI。这很糟糕,因为它会减慢解析速度。例如,“ http://www.prostep.org/reqif ”解析为网页。内容解析就好了(当然,因为Namespace URI只是一个名字),只是需要很长时间,因为Parser在检索URI时会挂很长时间。

所以,两个问题:

  1. 为什么 Xerces 会尝试将命名空间 URI 视为具有“真实”内容的 URI?
  2. 我怎样才能禁用它?

作为记录,URI 既不是 Schema 也不是 DTD 的位置。我仍然尝试禁用加载外部 DTD,当然,这并没有做任何事情:

parser.setProperty("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

有什么想法吗?

4

0 回答 0