我有以下问题:我有一个带有许多命名空间的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时会挂起很长时间。
所以,有两个问题:
对于记录,URI既不是Schema或DTD的位置。我仍然试图禁用加载外部DTD,当然,它没有做任何事情:
parser.setProperty("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
有什么想法吗?