Re: XML and Java from Beginner
privateson@hotmail.com wrote:
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;
}
}