我有以下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文件请帮助,谢谢......: - )
答案 0 :(得分:19)
你应该做三件事:
在 XML声明之后使用doctype声明将源XML文档与其DTD相关联:
<!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> Vinod1@yahoo.com </Emp_E-mail>
</Employee>
答案 1 :(得分:1)
您只需阅读文件并报告例外情况(如果有)。这是您可以信赖的SAX parser example。
为了验证您的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>