Ответ 1
Есть три вещи, которые вы должны сделать:
-
Свяжите исходный XML-документ с его DTD, используя объявление doctype после объявления XML:
<!DOCTYPE Employee SYSTEM "employee.dtd">
Примечание: корень DOCTYPE должен соответствовать корневому элементу в исходном XML.
-
setValidating
доtrue
наDocumentBuilderFactory
-
Предоставьте экземпляр
org.xml.sax.ErrorHandler
дляDocumentBuilder
, используяsetErrorHandler
Вот полный пример:
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("employee.xml");
Исходный документ:
<?xml version="1.0"?>
<!DOCTYPE Employee SYSTEM "employee.dtd">
<Employee>
<Emp_Id> E-001</Emp_Id>
<Emp_Name> Vinod </Emp_Name>
<Emp_E-mail> [email protected] </Emp_E-mail>
</Employee>