首页 > 解决方案 > 如何忽略 XML 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]。我的问题是是否有办法忽略此类导入语句,并在本地加载文件。

标签: javaxmlxsdschema

解决方案


推荐阅读