gpt4 book ai didi

java - 使用本地 dtd 进行 xml 验证使用 java 传递本地 xml 和 dtd 文件

转载 作者:太空宇宙 更新时间:2023-11-04 14:39:26 26 4
gpt4 key购买 nike

我发现了很多这样的例子:

    public static boolean validateXMLSchema(String xsdPath, String xmlPath){

try {
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File(xsdPath));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File(xmlPath)));
} catch (IOException | SAXException e) {
System.out.println("Exception: "+e.getMessage());
return false;
}
return true;
}
}

展示了如何通过 xsd 验证 xml 文件,我发现使用 dtd 文件做同样的事情并不容易。我有一堆使用不同类型 dtd 的 xml 文件(dtd 文件位于另一个位置),格式为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name SYSTEM "name.dtd">
<name>

.
.
.

</name>

与上面的示例类似,我应该如何使用 dtd(传递本地 xml 和 dtd 路径)进行验证?

最佳答案

如果您使用 SAX 解析器,您可能需要查看 org.xml.sax.EntityResolver 接口(interface)。您创建一个实现此接口(interface)的类,并在 XMLReader 上调用 .setEntityResolver(yourResolver)。如果 DTD 可用,大多数 SAX 解析器将自动验证您的 XML,否则您可能必须将 validation 功能设置为 true

关于java - 使用本地 dtd 进行 xml 验证使用 java 传递本地 xml 和 dtd 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25133371/

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