Parsing af XML med SAX - klasse returnerer 'null'
Hej Eksperten,Jeg har et større problem i forbindelse med parsing af en XML-fil og "manupulering" af nodes værdier.
Lavpraktisk har jeg en XML-fil med nogle tags (something.xml):
=================================================
<?xml version="1.0" encoding="UTF-8"?>
<data>
<phrase id="1" value="something"/>
<phrase id="2" value="different"/>
</data>
=================================================
min klasse ser således ud:
=================================================
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class Parser extends DefaultHandler{
private String id, value, something, different;
private String xmlfile = "something.xml";
int index;
public Parser(){
}
public void parseDocument(){
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
DefaultHandler handler = new Language();
parser.parse(xmlfile, handler);
}
catch (Exception e) {
}
}
// start element
public void startElement(String uri, String localName, String qname, Attributes atts) throws SAXException {
if(qname.equals("phrase")){
id = atts.getValue("id");
value = atts.getValue("value");
}
index = Integer.valueOf(id);
}
// end element
public void endElement(String uri, String localName, String qname) throws SAXException{
doStuff(index, value);
}
// switch case manipulation
public void doStuff(int i, String s){
switch(i){
case 1: setSomething(s); break;
case 2: setDifferent(s); break;
default: System.out.println("Oh noes!");
}
}
public void setSomething(String s){
something = s;
}
public void setDifferent(String s){
different = s;
}
public String getSomething(){
return something;
}
public String getDifferent(){
return different;
}
}
=================================================
Testklassen:
=================================================
public class ParserTest {
public static void main(String[] args) {
Parser p = new Parser();
p.parseDocument();
System.out.printf("%s %s", p.getSomething(), p.getSomething());
}
}
I stedet for at udskrive "something different", får jeg blot "null null".
Hvis jeg mens xml-filen parses udskriver værdier er der ingen problemer. Det udskrives det rigtige...
Nogle ideer til hvordan jeg kommer videre?