Solved

SAXParseException while parsing the data

Posted on 2008-10-10
5
212 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

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
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.
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:

708 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now