Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / May 2007

Tip: Looking for answers? Try searching our database.

XML and Java from Beginner

Thread view: 
privateson@hotmail.com - 15 May 2007 17:50 GMT
Hi,

I am a Beginner, and need some help.
I am using .Net service and Java.

One of my webMethod can return an array of integer,
and the xml will looks like this:

<returnIntsResult>
       <int>1</int>
       <int>2</int>
       <int>3</int>
</returnIntsResult>

How can I read all those integers?

Right now I am using the following java code and can only read the
first integer:

try {
     // Since the Body.unmarshall() handler is static, we can't
     // replace the basic machinery easily. Instead, we must obtain
     // and parse the message on our own.
     this.soapMessage_ = this.message_.receive();
     XMLReader reader =
(XMLReader)Class.forName("org.apache.xerces.parsers.SAXParser").newInstance();
     SAXHandler handler = new SAXHandler();
     handler.setElementToSearchFor ("returnIntsResult");

     // Set the Content Handler
     reader.setContentHandler (handler);

     // Parse the file
     reader.parse ( new InputSource (new StringReader
(this.soapMessage_.getContent().toString() )));

     // If we reached here, the result has been parsed and
     // stored in the handler instance.
     for(int i=0; i<3; i++){
       returnValue[i]="";
       returnValue[i] = handler.getResult();

     }
   }
   catch (Exception exception) {
..........

Thank you for your help
Arne Vajhøj - 19 May 2007 21:23 GMT
> I am a Beginner, and need some help.
> I am using .Net service and Java.
[quoted text clipped - 9 lines]
>
> How can I read all those integers?

The code attached below can parse that XML.

But is it a web service ?

If it is then you should not be parsing the XML manual. You
should generate a client stub from the WSDL so you can call
a method and get an int array returned without you having
to know anything about XML.

Arne

==============================================

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class SAXDemo {
   public static void main(String[] args) {
      ArrayList<String> result = new ArrayList<String>();
      try {
         SAXParserFactory spf = SAXParserFactory.newInstance();
         SAXParser sp = spf.newSAXParser();
         XMLReader xr = sp.getXMLReader();
         xr.setContentHandler(new MySaxParser(result));
         xr.parse("C:\\demo.xml");
      } catch (FactoryConfigurationError e) {
         e.printStackTrace();
      } catch (ParserConfigurationException e) {
         e.printStackTrace();
      } catch (SAXException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
      for(String item : result) {
          System.out.println(item);
      }
   }
}

class MySaxParser extends DefaultHandler {
   private StringBuffer element = new StringBuffer();
   private ArrayList<String> result;
   public MySaxParser(ArrayList<String> result) {
      this.result = result;
   }
   public void characters(char buf[], int offset, int len) throws
SAXException {
      element.append(new String(buf, offset, len));
      return;
   }
   public void startElement(String namespaceURI, String localName,
String rawName, Attributes atts) throws SAXException {
      if (rawName.equals("int")) {
         element = new StringBuffer();
      }
      return;
   }
   public void endElement(String namespaceURI, String localName, String
rawName) throws SAXException {
      if (rawName.equals("int")) {
         result.add(element.toString());
      }
      return;
   }
}


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.