Many Many Many Thanks, xpp is the best parser XML that I have seen.
Thank you again
Please he looks at this:
Http://www-106.ibm.com/developerworks/xml/library/x-injava/
--- In xmlpull-user@yahoogroups.com, Aleksander Slominski
<aslom@c...> wrote:
> operaska wrote:
>
> >Hi
> >
> >It would be achieved with
> >Pp.setInput (new StringReader (stringXml.trim ()));
> >Please, You might explain the example (Roundtrip), I do not
> >understand it.
> >
> >
> study API, samples, and read about xmlpull:
> http://www.cafeconleche.org/books/xmljava/chapters/ch05s09.html
> and if you do not understand XML parsing then read whole book
> http://www.cafeconleche.org/books/xmljava/
>
> HTH,
>
> alek
>
> ps. here is working example that does what you want
>
> /* -*- c-basic-offset: 4; indent-tabs-mode: nil; -*-
> //------100-columns-wide------>|*/
> // for license please see accompanying LICENSE.txt file (available
also
> at http://www.xmlpull.org/)
>
>
> //package org.xmlpull.v1.samples;
>
> import java.io.*;
>
> import org.xmlpull.v1.XmlPullParser;
> import org.xmlpull.v1.XmlPullParserException;
> import org.xmlpull.v1.XmlPullParserFactory;
>
> import org.xmlpull.v1.XmlSerializer;
>
> /**
> * This sample demonstrates how to roundtrip XML document
> * (roundtrip is not exact but infoset level)
> */
>
> public class RoundtripAndCheck {
>
> private final static String PROPERTY_XMLDECL_STANDALONE =
> "http://xmlpull.org/v1/doc/features.html#xmldecl-standalone";
> private final static String PROPERTY_SERIALIZER_INDENTATION =
> "http://xmlpull.org/v1/doc/properties.html#serializer-
indentation";
>
> private XmlPullParser parser;
> private XmlSerializer serializer;
>
> private RoundtripAndCheck(XmlPullParser parser, XmlSerializer
> serializer) {
> this.parser = parser;
> this.serializer = serializer;
> }
>
> private void writeStartTag() throws XmlPullParserException,
> IOException {
> //check for case when feature xml roundtrip is supported
> //if (parser.getFeature (FEATURE_XML_ROUNDTRIP)) {
>
> if(!parser.getFeature
(XmlPullParser.FEATURE_REPORT_NAMESPACE_ATTRIBUTES)) {
> for(int i = parser.getNamespaceCount(parser.getDepth() -
1);
> i <= parser.getNamespaceCount(parser.getDepth()) -
1; i++) {
> serializer.setPrefix
> (parser.getNamespacePrefix(i),
> parser.getNamespaceUri(i));
> }
> }
> serializer.startTag(parser.getNamespace(), parser.getName
());
>
> for(int i = 0; i < parser.getAttributeCount(); i++) {
> if(parser.getAttributeName(i).equals("date")) {
> serializer.attribute
> (parser.getAttributeNamespace(i),
> parser.getAttributeName(i),
> "12-12-05:12:00:00");
> } else {
> serializer.attribute
> (parser.getAttributeNamespace(i),
> parser.getAttributeName(i),
> parser.getAttributeValue(i));
> }
> }
> //serializer.closeStartTag();
> }
>
>
> private void writeToken(int eventType) throws
> XmlPullParserException, IOException {
> switch(eventType) {
> case XmlPullParser.START_DOCUMENT:
> //use Boolean.TRUE to make it standalone
> Boolean standalone = (Boolean)
> parser.getProperty(PROPERTY_XMLDECL_STANDALONE);
> serializer.startDocument(parser.getInputEncoding(),
> standalone);
> break;
>
> case XmlPullParser.END_DOCUMENT:
> serializer.endDocument();
> break;
>
> case XmlPullParser.START_TAG:
> writeStartTag();
> break;
>
> case XmlPullParser.END_TAG:
> serializer.endTag(parser.getNamespace(),
parser.getName());
> break;
>
> case XmlPullParser.IGNORABLE_WHITESPACE:
> //comment it to remove ignorable whtespaces from
XML infoset
> String s = parser.getText();
> serializer.ignorableWhitespace(s);
> break;
>
> case XmlPullParser.TEXT:
> serializer.text(parser.getText());
> break;
>
> case XmlPullParser.ENTITY_REF:
> serializer.entityRef(parser.getName());
> break;
>
> case XmlPullParser.CDSECT:
> serializer.cdsect(parser.getText());
> break;
>
> case XmlPullParser.PROCESSING_INSTRUCTION:
> serializer.processingInstruction(parser.getText());
> break;
>
> case XmlPullParser.COMMENT:
> serializer.comment(parser.getText());
> break;
>
> case XmlPullParser.DOCDECL:
> serializer.docdecl(parser.getText());
> break;
> }
> }
>
> private void roundTrip() throws XmlPullParserException,
IOException {
> parser.nextToken(); // read first token
> writeToken(XmlPullParser.START_DOCUMENT); // write
optional
> XMLDecl if present
> while(parser.getEventType() != XmlPullParser.END_DOCUMENT) {
> writeToken(parser.getEventType());
> parser.nextToken();
> }
> writeToken(XmlPullParser.END_DOCUMENT);
> }
>
> private static void roundTrip(Reader reader, Writer writer,
String
> indent)
> throws XmlPullParserException, IOException {
> XmlPullParserFactory factory =
XmlPullParserFactory.newInstance();
> factory.setNamespaceAware(true);
> XmlPullParser pp = factory.newPullParser();
> pp.setInput(reader);
> XmlSerializer serializer = factory.newSerializer();
> serializer.setOutput(writer);
> if(indent != null) {
> serializer.setProperty(PROPERTY_SERIALIZER_INDENTATION,
indent);
> }
> (new RoundtripAndCheck(pp, serializer)).roundTrip();
>
> }
>
> private static void roundTrip(XmlPullParserFactory factory,
String loc)
> throws XmlPullParserException, IOException {
> roundTrip(factory, loc, null);
> }
>
> private static void roundTrip(XmlPullParserFactory factory,
String
> loc, String indent)
> throws XmlPullParserException, IOException {
> XmlPullParser pp = factory.newPullParser();
> pp.setInput(new java.net.URL(loc).openStream(), null);
>
> XmlSerializer serializer = factory.newSerializer();
> serializer.setOutput(System.out, null);
> if(indent != null) {
> serializer.setProperty(PROPERTY_SERIALIZER_INDENTATION,
indent);
> }
> (new RoundtripAndCheck(pp, serializer)).roundTrip();
> }
>
> // public static void main(String[] args) throws Exception {
> // //for (int i = 0; i < args.length; i++)
> // XmlPullParserFactory factory =
XmlPullParserFactory.newInstance();
> // factory.setNamespaceAware(true);
> // for(int i = 0; i < 1; i++) {
> // roundTrip(factory, args[i], " ");
> // }
> // }
>
> public static void main(String[] args) throws Exception {
> String XML = "<test><foo date='yesterday'>fdf</foo></test>";
> Reader r = new StringReader(XML);
> Writer w = new StringWriter();
> //roundTrip(r, w, " ");
> roundTrip(r, w, null);
> System.out.println("XML="+w);
> }
>
> }
>
>
>
> --
> The best way to predict the future is to invent it - Alan Kay