Solved

SAXParseException while parsing the data

Posted on 2008-10-10
5
214 Views
Last Modified: 2013-11-23
Hi All,

I'm trying to write parse XML using JAXP 1.1. I've given input to parser as shown in below code.

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse(new File(args[0], handler);


this worked for me. But I've tried to pass java.io.InputStream reference to the overloaded parse() method of SAXParser class, it throwed the following exception

org.xml.sax.SAXParseException: Content is not allowed in trailing section.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:143)
at CMMCompareHelper.main(CMMCompareHelper.java:234)


I'm using JAXP 1.1 with J2SE 1..4.2. My requirement is that I get the XML as a String and I've tried to convert it to java.io.ByteArrayInputStream and passed to the SAXParser. It din't work. Code I've written to do this is shown below:

FileInputStream in = new FileInputStream(new File(args[0]));
                  
byte[] buf = new byte[512];
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
while(in.read(buf) != -1){
    byteOut.write(buf);                        
}
InputStream newCMMStream = new ByteArrayInputStream(byteOut.toByteArray());                  
SAXParser parser = factory.newSAXParser();                  
parser.parse(newCMMStream, handler);


Am I doing something wrong?
Thanks in advance for any help in this regard.

Satya
0
Comment
Question by:ysatyakrishna
5 Comments
 
LVL 5

Expert Comment

by:muktajindal
ID: 22700204
Try using following statement to convert your xml string directly into InputStream (without using FileInputStream)  :

InputStream newCMMStream = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));

0
 

Author Comment

by:ysatyakrishna
ID: 22718952
Hi,

I got it worked by getting the input from String instead of File.

Thank you,

Satya
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 22879156
>>
while(in.read(buf) != -1){
    byteOut.write(buf);                        
}
>>

You write the whole of the buffer. That would only work in the very unlikely eventuality that inputlength % buf.length == 0. Otherwise you're going to write garbage at the end
0
 
LVL 1

Accepted Solution

by:
Computer101 earned 0 total points
ID: 23180300
PAQed with points refunded (500)

Computer101
EE Admin
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

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

This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…

810 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