gpt4 book ai didi

java - 我们如何自动检测XML文件中的XSD模式文件?

转载 作者:行者123 更新时间:2023-11-30 07:13:44 24 4
gpt4 key购买 nike

我正在尝试根据许多 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.
}

});

关于java - 我们如何自动检测XML文件中的XSD模式文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38770301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com