19. april 2005 - 19:24
Der er
6 kommentarer og 1 løsning
SAX til at hente data fra XML fil
Hej, Jeg har eksemepelvis denne form for XML-fil: <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <root> <node1>text1</node1> <node2>text2</node2> </root> Og vil gerne, ved hjælp af en simpel System.out.println, få dette ud: text1 text2 her er en snippet af den kode jeg arbejder med: class MySax extends DefaultHandler { public void startElement( String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException { System.out.println(rawName.toString() ); return; } Men det udskriver elementnavnene: node1 node2 Hvordan får jeg nodens tekst hentet frem? På forhånd tak
Annonceindlæg fra Arrow ECS
19. april 2005 - 19:29
#2
tja - i kan også få hele koden, hvis det skulle behjælpeligt: import org.xml.sax.*; import org.xml.sax.helpers.*; import javax.xml.parsers.*; import org.xml.sax.*; public class SAXofDOOM { public static void main(String[] args) throws Exception { SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setValidating(false); SAXParser saxParser = spf.newSAXParser(); XMLReader xmlReader = saxParser.getXMLReader(); xmlReader.setContentHandler(new MySax()); xmlReader.parse("C:\\SAXFil.xml"); return; } } class MySax extends DefaultHandler { public void startElement( String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException { if(rawName.equals("node1") || rawName.equals("node2")) { System.out.println("executing: " + rawName.toString() ); } return; } }
19. april 2005 - 19:46
#3
ok - fremragende artikel. Den hjalp mig til at komme videre. Smid et svar, så er der points.
19. april 2005 - 19:59
#4
svar
19. april 2005 - 20:02
#5
du kunne vel ikke lige fortælle mig hvordan jeg sørger for at programmet kun udskriver den første af alle node2 forekomster? <root> <node1>text1</node1> <node2>text2</node2> <node2>text3</node2> <node2>text4</node2> </root> således output stadig er: text1 text2
19. april 2005 - 20:11
#6
One simple solution would be: class MySax extends DefaultHandler { private boolean first = true; public void startElement( String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException { if(rawName.equals("node1")) { System.out.println("executing: " + rawName.toString() ); } if(rawName.equals("node2")) { if(first) System.out.println("executing: " + rawName.toString() ); first = false; } return; } }
19. april 2005 - 20:16
#7
takker
Kurser inden for grundlæggende programmering