如何忽略XML模式导入并在本地提供源?

时间:2019-08-09 10:59:44

标签: java xml xsd schema

因此,我正在尝试使用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]。我的问题是是否有一种方法可以忽略此类导入语句,并在本地加载文件。

0 个答案:

没有答案