我有以下问题:我有一个带有多个命名空间的 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时会挂很长时间。
所以,两个问题:
- 为什么 Xerces 会尝试将命名空间 URI 视为具有“真实”内容的 URI?
- 我怎样才能禁用它?
作为记录,URI 既不是 Schema 也不是 DTD 的位置。我仍然尝试禁用加载外部 DTD,当然,这并没有做任何事情:
parser.setProperty("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
有什么想法吗?