By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,275 Members | 1,245 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,275 IT Pros & Developers. It's quick & easy.

SAX Parsing - Weird results when parsing content between tags.

P: n/a
I have an XML like the one below.

I am using SAX parsing and I need to get the information between the
tags of the Email element. First i try to access the content and print
it out and it gives me weird results.

XML:
/www.xmlspy.com) by AB(Co) --><!--Sample XML file generated by XML Spy
v4.0.1 U (http://www.xmlspy.com)-->
<RoomResRQ xmlns:commonelements="http://*.com/schema/CommonElements"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
Action="CreateNew">

<RoomResSpecs>
<RoomResSpec>
<RoomResParty>
<PartyMixInfo>
<Email>
na**********@yahoo.com
</Email>
</PartyMixInfo>
</RoomResParty>
</RoomResSpec>
</RoomResSpecs>
</RoomResRQ>
The RESULT of running my parser on this is:

/www.xmlspy.com) by AB(Co) --><!--Sample XML file generated by XML Spy
v4.0.1 U (http://www.xmlspy.com)-->
<RoomResRQ xmlns:commonelements="http://*.com/schema/CommonElements"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
Action="CreateNew">

<RoomResSpecs>
<RoomResSpec>
<RoomResParty>
<PartyMixInfo>
<Email>
na**********@yahoo.com

I expect only the email address to be output, but everything else
before the address is also printed.
I appreciate if anyone can help.
In startelement(), I have the following condition for email.
if (localName.equals(Email)
{
readyForContent = true;
}
In the characters() method, I read the content only when the
readyForContent flag is true. In the endElement() method, I first set
the readyForContent flag to true.
So, The content is read only when the flag is true and it happens only
when the startElement is Email.

public void characters(char[] ch, int start, int length)
throws SAXException {

if (readyForContent)
{
emailBuf = new StringBuffer();
emailBuf.append(ch, start, length);
System.out.println(emailBuf);

}
}
public void endElement(String namespaceURI, String localName, String
qName)
throws SAXException {
readyForContent = false;
//clean the stack
if (!tagStack.isEmpty()){
tagStack.pop();
}
}
Jul 20 '05 #1
Share this question for a faster answer!
Share on Google+

This discussion thread is closed

Replies have been disabled for this discussion.