N
Naren
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>
(e-mail address removed)
</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>
(e-mail address removed)
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();
}
}
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>
(e-mail address removed)
</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>
(e-mail address removed)
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();
}
}