XML and Java from Beginner

P

privateson

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="";
returnValue = handler.getResult();

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


Thank you for your help
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

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?

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;
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,189
Latest member
CryptoTaxSoftware

Latest Threads

Top