我试图在java中使用外部XSD验证XML。但我看到的示例是添加Xerces的依赖项,但从javax.xml导入javax.xml等
为什么会这样?如何使用java中的Xerces验证Xml?
发布于 2022-09-09 15:56:16
您真的不需要Xerces的外部依赖。JVM包含自己的Xerces版本。但是内部版本的包结构与外部Xerces不同。
内部包是:com.sun.org.apachge.xerces。
外部包是:org.apache.xerces。
java.xml只是Xerces提供的实现类的抽象层。
默认实现是内部Xerces版本。但是,如果包含外部Xerces Jars,则有一种自动使用外部实现的机制。
例如,查看xercesImpl.jar内部(我下载了Xerces 2.12.2的二进制发行版)。在META-INF/services下有一些像javax.xml.validation.SchemaFactory这样的文本文件。
javax.xml.validation.SchemaFactory的内容如下:
org.apache.xerces.jaxp.validation.XMLSchemaFactory因此,在运行时,如果xercesImpl.jar位于类路径上,则将该类作为SchemaFactory的实现。
底层机制记录在类java.util.ServiceLoader中。
https://stackoverflow.com/questions/73656799
复制相似问题