[英]How to validate xml with dtd using java?
我有以下xml文件:
<?xml version = "1.0" ?>
<Employee>
<Emp_Id>E-001</Emp_Id>
<Emp_Name>Vinod</Emp_Name>
<Emp_E-mail>Vinod1@yahoo.com</Emp_E-mail>
</Employee>
我有以下 dtd 文件:
<!ELEMENT Employee (Emp_Id, Emp_Name, Emp_E-mail)>
<!ELEMENT Emp_Id (#PCDATA)>
<!ELEMENT Emp_Name (#PCDATA)>
<!ELEMENT Emp_E-mail (#PCDATA)>
我想使用 java 用上面的 dtd 驗證這個 xml 文件。
請幫助謝謝..:-)
你應該做三件事:
在 XML 聲明之后使用 doctype 聲明將源 XML 文檔與其 DTD 相關聯:
<!DOCTYPE Employee SYSTEM "employee.dtd">
注意:DOCTYPE 根必須與源 XML 中的根元素匹配。
在DocumentBuilderFactory
上setValidating
為true
使用setErrorHandler
為DocumentBuilder
提供一個org.xml.sax.ErrorHandler
實例
這是一個完整的例子:
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> Vinod1@yahoo.com </Emp_E-mail>
</Employee>
您只需要閱讀文件並報告異常(如果有)。 這是您可以依賴的SAX 解析器示例。
為了驗證您的 XML 和 DTD,您只需要 setValidating:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(true); // since the default value is false
還要在 XML 文件中聲明 DTD 用法:
<?xml version="1.0"?>
<!DOCTYPE Employee SYSTEM "employee.dtd">
<Employee>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.