【发布时间】:2013-04-14 18:35:36
【问题描述】:
我有一个 XML 文件,其中有一个 DTD 引用,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE something SYSTEM "something.dtd">
我正在使用DocumentBuilderFactory:
public static Document validateXMLFile(String xmlFilePath) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setValidating(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
builder.setErrorHandler(new ErrorHandler() {
@Override
public void error(SAXParseException exception) throws SAXException {
// do something more useful in each of these handlers
exception.printStackTrace();
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
exception.printStackTrace();
}
@Override
public void warning(SAXParseException exception) throws SAXException {
exception.printStackTrace();
}
});
Document doc = builder.parse(xmlFilePath);
return doc;
}
但现在我想根据用户定义位置上的 DTD 文件验证 XML 文件,而不是相对于 XML 文件的路径。
我该怎么做?
例子:
validateXMLFile("/path/to/the/xml_file.xml", "/path/to/the/dtd_file.dtd");
【问题讨论】:
-
xmlsoft.org/xmllint.html :这似乎有办法接受 dtd 的 url 并验证 xml。你应该检查它的来源。
标签: java dtd xml-validation