I have following xml file:
<?xml version = "1.0" ?>
<Employee>
<Emp_Id>E-001</Emp_Id>
<Emp_Name>Vinod</Emp_Name>
<Emp_E-mail>[email protected]</Emp_E-mail>
</Employee>
I have following dtd file:
<!ELEMENT Employee (Emp_Id, Emp_Name, Emp_E-mail)>
<!ELEMENT Emp_Id (#PCDATA)>
<!ELEMENT Emp_Name (#PCDATA)>
<!ELEMENT Emp_E-mail (#PCDATA)>
I want to validate this xml file with above dtd using java.
Please, help thanks..:-)
XML validation is the process of checking a document written in XML (eXtensible Markup Language) to confirm that it is both well-formed and also "valid" in that it follows a defined structure. A well-formed document follows the basic syntactic rules of XML, which are the same for all XML documents.
You can validate your XML documents against XML schemas only; validation against DTDs is not supported.
There are three things you should do:
Associate the source XML document with its DTD using a doctype declaration after the XML declaration:
<!DOCTYPE Employee SYSTEM "employee.dtd">
Note: The DOCTYPE root must match the root element in the source XML.
setValidating
to true
on the DocumentBuilderFactory
Provide an org.xml.sax.ErrorHandler
instance to the DocumentBuilder
using setErrorHandler
Here's a complete example:
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");
Source document:
<?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>
You just need to read the files and report the exceptions, if any. Here is a SAX parser example you can rely upon.
In order to validate your XML and DTD you just need to setValidating:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(true); // since the default value is false
Also declare the DTD usage in your XML file:
<?xml version="1.0"?>
<!DOCTYPE Employee SYSTEM "employee.dtd">
<Employee>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With