Xerces尝试下载Namespace URI - 为什么?我可以禁用吗?

时间:2014-08-17 06:21:28

标签: xml-parsing sax xerces reqif

我有以下问题:我有一个带有许多命名空间的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”解析为网页。内容被解析得很好(当然,因为名称空间URI只是一个名称),它只需要很长时间,因为解析器在检索URI时会挂起很长时间。

所以,有两个问题:

  1. 为什么Xerces会尝试使用“真实”内容来处理URI这样的名称空间URI?
  2. 如何禁用此功能?
  3. 对于记录,URI既不是Schema或DTD的位置。我仍然试图禁用加载外部DTD,当然,它没有做任何事情:

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

    有什么想法吗?

0 个答案:

没有答案