【发布时间】:2016-12-10 18:02:23
【问题描述】:
我正在尝试针对许多 XSD 文件验证 XML 文件。此时我只能手动输入 xsd 架构。 (我的意思是我检查了我的 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 Parser 和 Java 8。
提前感谢所有帮助。
编辑: @kjhughes 我不是随便问的
根据 XSD 文件验证 XML 文件的最佳方法是什么?
我的问题:我们如何检测 XML 文件中的 XSD 架构文件。例如,当我想验证包含 b.xsd 和 c.xsd 的 a.xml 时,我想以真实的顺序自动检测这些文件。我的意思是,如果 XML 首先使用来自 c.xsd 的命名空间,那么它应该被检测到。在我的示例中,XSD 模式文件及其顺序是通过检查 XML 内部手动编写的。
【问题讨论】:
-
如何使用自定义实体解析器来查找引用的架构?
-
@ulab 我已经阅读了docs.oracle.com/javase/7/docs/api/org/xml/sax/…,但实际上我无法理解如何申请。你能解释一下吗?
-
带有这些 XSD 声明的示例 XML 可以提供帮助。你能发个样本吗?
-
@RamachandranGA 请提供任何示例或链接?
-
实际上我的代码可以工作,但不是“自动化”