我们如何自动检测 XML 文件中的 XSD 模式文件?
How can we automatically detect XSD schema files in XML file?
我正在尝试针对许多 XSD 文件验证一个 XML 文件。此时我只能手动输入xsd schema。 (我的意思是我检查我的 XML 文件并查看 XSD 定义)。我如何检测任何 XML 文件中的 XSD 架构文件?
到目前为止我尝试了什么:
// 以下方法根据多个 xsd 模式文件检查 xml 文件。
public static void XSDValidation() throws SAXException, IOException, ParserConfigurationException {
try {
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema sch = schemaFactory.newSchema(new Source[] { new StreamSource(new FileInputStream("role-1.2.xsd")),
new StreamSource(new FileInputStream("role-1.1.xsd")) });
Validator validator = sch.newValidator();
validator.validate(new StreamSource("role.xml"));
System.out.println("INFO: Validation is done successfully.");
} catch (Exception e) {
System.out.println("ERROR: Validation is failed.");
}
}
我使用 DOM 解析器和 Java 8.
预先感谢您的所有帮助。
编辑:
@kjhughes 我不是简单的问
What's the best way to validate an XML file against an XSD file?
我的问题: 我们如何检测 XML 文件中的 XSD 架构文件。例如,当我想验证包含 b.xsd 和 c.xsd 的 a.xml 时,我想自动并按真实顺序检测这些文件。我的意思是,如果 XML 首先使用来自 c.xsd 的命名空间,那么它应该被检测到。在我的示例中,XSD 模式文件及其顺序是通过检查 XML 内部手动编写的。
您可以使用 LSResourceResolver 来解决模式依赖关系。尽管您必须在此处指定所有依赖项,但它将代码与架构引用隔离开来。
schemaFactory.setResourceResolver(new LSResourceResolver(){
@Override
public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) {
// resovle the path to schema , read and return it.
}
});
我正在尝试针对许多 XSD 文件验证一个 XML 文件。此时我只能手动输入xsd schema。 (我的意思是我检查我的 XML 文件并查看 XSD 定义)。我如何检测任何 XML 文件中的 XSD 架构文件?
到目前为止我尝试了什么: // 以下方法根据多个 xsd 模式文件检查 xml 文件。
public static void XSDValidation() throws SAXException, IOException, ParserConfigurationException {
try {
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema sch = schemaFactory.newSchema(new Source[] { new StreamSource(new FileInputStream("role-1.2.xsd")),
new StreamSource(new FileInputStream("role-1.1.xsd")) });
Validator validator = sch.newValidator();
validator.validate(new StreamSource("role.xml"));
System.out.println("INFO: Validation is done successfully.");
} catch (Exception e) {
System.out.println("ERROR: Validation is failed.");
}
}
我使用 DOM 解析器和 Java 8.
预先感谢您的所有帮助。
编辑: @kjhughes 我不是简单的问
What's the best way to validate an XML file against an XSD file?
我的问题: 我们如何检测 XML 文件中的 XSD 架构文件。例如,当我想验证包含 b.xsd 和 c.xsd 的 a.xml 时,我想自动并按真实顺序检测这些文件。我的意思是,如果 XML 首先使用来自 c.xsd 的命名空间,那么它应该被检测到。在我的示例中,XSD 模式文件及其顺序是通过检查 XML 内部手动编写的。
您可以使用 LSResourceResolver 来解决模式依赖关系。尽管您必须在此处指定所有依赖项,但它将代码与架构引用隔离开来。
schemaFactory.setResourceResolver(new LSResourceResolver(){
@Override
public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) {
// resovle the path to schema , read and return it.
}
});