Solved

Validating xml documents using external DTD's

Posted on 2008-10-16
1
856 Views
Last Modified: 2012-05-05
Hello Experts,

In my application i am parsing xml files which includes dtd file path in DOCTYPE declaration. I do not want parser to use the dtd file which is reffered in same xml file, instead of that I would like to pass dtd file path from java program.
I have done lot of googling and come to know that it could be done by entityResolver. However, the problem is that when I am passing path from the application it gives error during validation like below...

"The markup declarations contained or pointed to by the document type declaration must be well-formed."

The piece of code I am using looks like;

public class TestValidation extends DefaultHandler implements EntityResolver {

//---custom dtd file to set for validation------
public static String customDTD= "../../../demo/dtdFile/test.dtd";

//-----------Here validation xml file private static void validatePackages(XML xmlFileName) throws IOException, ParserConfigurationException, SAXException {

TestValidation errorHandler = new TestValidation ();

SAXParserFactory factory = SAXParserFactory.newInstance();

factory.setValidating(true);

try {

SAXParser parser = factory.newSAXParser();
if(!xmlFileName.exists()) {
System.err.println("Did not find file ");
}
parser.parse(f, errorHandler);
}

}finally {

errorHandler.setErrors(errorcount);
}

}

//-------------------Checking for dtd file given in xml file if yes then setting it to custom file----------------------------

public InputSource resolveEntity(String publicId, String systemId)
{

if (systemId.contains(".dtd")){
System.out.println("publicId="publicId" systemId="+systemId );

return new InputSource(new ByteArrayInputStream(customDTD.getBytes()));
}

else{
System.out.println("Other tag found");
return null;
}
}

public void error(SAXParseException e) throws SAXParseException {

---- Handling errors found;
}

}

I think the way I am providing dtd file path is wrong.
Can you please suggest the modified code for this?

Thanks,
Shailesh
0
Comment
Question by:ShaileshShinde
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 12

Accepted Solution

by:
basav_com earned 250 total points
ID: 22740155
Note : This is just a workaround to the above problem.  For all, please ignore the following solution and reply to the actual question posted by ShaileshShinde.

Read the file using FileReader and replace the 'doctype' declaration with your required data and create an intermediate temp .xml file.

Now read the above temp xml file.

0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers learn about the “while” loop and how to utilize it correctly in Java. Additionally, viewers begin exploring how to include conditional statements within a while loop and avoid an endless loop. Define While Loop: Basic Example: Explanatio…
This video teaches viewers about errors in exception handling.

724 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question