因此,我正在尝试使用XML创建者提供的架构来验证XML文件。
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newDefaultInstance();
dbFactory.setNamespaceAware(true);
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
StreamSource[] resources = new StreamSource[3];
resources[0] = new StreamSource(new FileInputStream("data/TSL_schema.xsd"));
resources[1] = new StreamSource(new FileInputStream("data/xml.xsd"));
resources[2] = new StreamSource(new FileInputStream("data/xmldsig-core-schema.xsd"));
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(resources);
schema.newValidator().validate(new StreamSource(file));
dbFactory.setSchema(schema);
this.document = dBuilder.parse(file);
第一个资源文件TSL_schema.xsd
包含以下导入语句。
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
我在另一个StackOverflow帖子中读到,W3C试图限制这些网页的访问量,因此我认为上面的代码示例大约需要40秒。执行。所需的导入分别为resources[1]
和resources[2]
。我的问题是是否有一种方法可以忽略此类导入语句,并在本地加载文件。