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 tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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