SAX-Parser - Dokumente einlesen und in einer Map ablegen

bvdcomp

Aktives Mitglied
Hallo zusammen

Ich habe eine Propertylist in XML mit dazugehörigem DTD und soll diese mittels SAX-parser einlesen und in einer Map speichern.

XML -> config.xml
[XML]
<?xml version="1.0+ encoding="UTF-8"?>
<!DOCTYPE RootElement SYSTEM "Y:\.......\XML\dtd\RootElement.dtd">
<Liste>
<Eigenschaft>
<Schluessel>IP-Adresse</Schluessel>
<Wert>192.168.1.100</Wert>
<Schluessel>DHCP</Schluessel>
<Wert>255.255.255.0</Wert>

<Schluessel>DNS</Schluessel><Wert>62.2.17.20</Wert>
<Schluessel>DNS 2</Schluessel>
<Wert>62.20.17.2</Wert>
<Schluessel>Gateway</Schluessel>
<Wert>192.168.1.1</Wert>
</Eigenschaft>
</Liste>
[/XML]

DTD - RootElement.dtd
Code:
<!Element Liste (Eigenschaft)*>
<!Element Eigenschaft (Schluessel, Wert)>
<Element Schluessel (#PCDATA)>
<Element Wert(#PCDATA)>

JAVA -> SaxTest.java
Java:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.xml.sax.helpers.DefaultHandler;
import java.io.*;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;

public class SaxTest{
	protected static final String XML_FILE_NAME ="config.xml";
	public static void main(String[] args){
	// liefert eine SAXParserFactory
	SAXParserFactory factory = SAXParserFactory.newInstance();
	try {
		// Die Methode newSAXParser() liefert einen SAXParser
		SAXParser saxParser = factory.newSAXParser();
		
		DefaultHandler handler= new MyHandler();
		saxParser.parse(XML_FILE_NAME, handler);
		}
	catch (ParserConfigurationException e){
		e.printStackTrace();
		}
	catch (SAXException e){
		e.printStackTrace();
		}
	catch (IOException e){
		System.out.println("I/O-Problem " + e);
		}
	}
}

class MyHandler extends DefaultHandler{
	// Event handlers
	Map<String,String> mp=new HashMap<String, String>();
	/**
	 * Wird aufgerufen, wenn der Parser den Dokumentanfang findet
	 */
		public void startDocument(){
		System.out.println("Start document");
	}
	
	/**
	 *  Wird aufgerufen, wenn der Parer das Dokumentende findet
	 */
	public void endDocument(){
		System.out.println("End document");
	}
	
	/** 
	 * Wird aufgerufen, wenn ein Start-Tag gefunden wird. 
	 * Parameter sind alle Datendes Start-Tags: Namensraum-URI, likaler Name
	 * qualifizierter name, Attribute  
	 */
	public void startElement(String uri, String name, String qname, Attributes atts)
	{
		mp.put(schluessel, atts);
	}
	
	/**
	 * Wird aufgerufen, wenn ein Ende-Tag gefunden wird -> Ausgabe vom Map-Inhalt
	 */
	public void endElement(String uri, String name, String qName)
	{
        Set s=mp.entrySet();
        Iterator it=s.iterator();

        while(it.hasNext())
        {
            Map.Entry m =(Map.Entry)it.next();
            int key=(Integer)m.getKey();
            String value=(String)m.getValue();
            System.out.println("Key :"+key+"  Value :"+value);
        }
	}
}

Ich habe das Problem das ich es nicht einlesen kann!
Kann mir da jemand weiterhelfen?

Danke:rtfm:
 

Noctarius

Top Contributor
Ich finde das XML Schema extrem ungünstig. Was mache ich denn wenn ich 2x Schluessel oder 2x Wert hintereinander habe, was ja durchaus gültig wäre. Wie willst du die dann zuordnen?

Besser wäre etwas wie:
[xml]<?xml version="1.0+ encoding="UTF-8"?>
<!DOCTYPE RootElement SYSTEM "Y:\.......\XML\dtd\RootElement.dtd">
<Liste>
<Eigenschaft>
<Eintrag schluessel="IP-Adresse">192.168.1.100</Eintrag>
<Eintrag schluessel="DHCP">255.255.255.0</Schluessel>
</Eigenschaft>
</Liste>[/xml]
 

bvdcomp

Aktives Mitglied
Hallo Noctarius

Ok, sehe ich jetzt auch, wo Du es erwähnst.

Die Methode startElement in der Klasse MyHandler

Java:
public void startElement(String uri, String name, String qname, Attributes atts)
    {
        mp.put(schluessel, atts);
    }

Ich komm da nicht weiter wie ich die Werte in einer Map anlegen kann.
Wer kann helfen?:rtfm:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Gibt es XML-Parser-Bibliotheken XML & JSON 3
B XML-Daten mit SAX Parser verarbeiten in Java XML & JSON 4
MiMa SAX-Parser beenden? XML & JSON 5
K GSON-Parser XML & JSON 6
K XML-Parser vs. XLST XML & JSON 4
L DOM Parser Implementieren XML & JSON 9
M SAX Parser implementieren XML & JSON 2
E Gibt es denn einen XML-Parser für JUnit-Tests? XML & JSON 6
D XSD Parser XML & JSON 1
T Neuer XML Parser!!! XML & JSON 33
J XML Parser anhand xsd erzeugen XML & JSON 2
H SAX Parser optimieren XML & JSON 5
H Sax Parser verschluckt teile XML & JSON 11
C XML SAX Parser XML & JSON 10
R Handler-Wechsel, SAX Parser bricht nach 8192 Byte ab XML & JSON 5
S Sax Parser Performance XML & JSON 2
M Eigener XML-Parser XML & JSON 1
S Typsicherer HTML-Parser XML & JSON 5
S HTML Parser XML & JSON 2
B Parser und Fabrik XML & JSON 6
F SAX Parser siehe nichts auf dem Konsole weder eine Fehlermeldung noch eine Ergebnis XML & JSON 6
enne87 SAX-Parser XML & JSON 5
C Mit SAX Parser XML Attribute auswerten XML & JSON 3
H XML-Parser: geparste Strings in Konstruktor? XML & JSON 9
S DOM Parser XML & JSON 12
S Sax Parser XML & JSON 3
D Speicherüberlauf bei character-Methode mit SAX-Parser XML & JSON 3
Y Welchen XML Parser / Klassen aus XSD generieren lassen XML & JSON 4
H Brauche ich einen speziellen XML-Parser? XML & JSON 2
M Unhierarchisches XML-File mit DOM-Parser auswerten XML & JSON 5
G XML Parser Fehler, zwei gleiche kind-Elemente XML & JSON 7
S Welcher XML-Parser am besten? XML & JSON 4
S Parser XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
Noar XML-Parser mit GUI? XML & JSON 2
R Problem mit SAX-Parser characters() XML & JSON 7
K SAX Parser Character Puffer zu klein XML & JSON 2
B Mit Sax-Parser validieren XML & JSON 7
Wildcard xpath Parser XML & JSON 8
P Komfortabel XML Dokumente schreiben und lesen XML & JSON 6
G XML Dokumente (teilweise) signieren XML & JSON 2
R XML Dokumente erstellen XML & JSON 1
iman XML Attribute mit JAVA einlesen mit Spring Batch XML & JSON 0
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
I Mit Hibernate eine XML-Datei in eine Tabellenspalte einlesen. XML & JSON 1
L XML einlesen gleichnamige Elemente XML & JSON 5
T HTML mit Hilfe Jsoup einlesen XML & JSON 11
R xlsx-Datei mit Apache POI einlesen XML & JSON 18
S CSV Datei einlesen und XML Ausgeben XML & JSON 2
W XML einlesen und Attribute auslesen XML & JSON 1
M XML Werte einlesen aber wie am besten weiterverarbeiten? XML & JSON 13
L XML nur ein Element einlesen XML & JSON 2
L Jackson JSON: Probleme beim einlesen XML & JSON 1
S XML in JTable Einlesen XML & JSON 3
B XML analysieren und einlesen XML & JSON 26
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
Ollek XML Einlesen - Welche API ist die richtige? XML & JSON 14
X XML einlesen XML & JSON 6
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
jstei001 .xsd File wärend der Laufzeit einlesen und XMl rausschreiben XML & JSON 5
J XML mit russischem Inhalt einlesen XML & JSON 4
D XML Einlesen mit JaxB XML & JSON 4
K Einlesen eines Parameters aus HTML-Datei XML & JSON 4
D Wie XML Datei einlesen und HTML entities übernehmen? XML & JSON 3
B Validierung nur beim einlesen oder auch beim schreiben? XML & JSON 4
N xsd pattern in java einlesen XML & JSON 6
F Einlesen von JDBC connection in Java von XML XML & JSON 4
J wert IN einem tag einlesen/schreiben XML & JSON 4
F XML erzeugen aus JTree und wieder einlesen... XML & JSON 6
N JDOM: XML einlesen XML & JSON 4
F XML mit DOM einlesen- Teile in Arraylist speichern XML & JSON 4
S XML einlesen XML & JSON 18
F XML Datei in Java einlesen XML & JSON 4
H XMI über EMF / UML2 einlesen XML & JSON 7
S XML einlesen, analysieren, bearbeiten & als Textdatei ausgeben XML & JSON 1
E XML Datei einlesen und Elemente in der Console ausgeben XML & JSON 6
H xml-Datei mit Attributen einlesen XML & JSON 3
C xml "zeilenweise" einlesen XML & JSON 6
B XML einlesen und in Datenbank schreiben XML & JSON 1
S XML-Schema einlesen um parsen zu erleichtern? XML & JSON 2
L Element einlesen <Telefon name="Karl">134313 XML & JSON 2
G XML Tag beim Einlesen manipulieren XML & JSON 2
J XML-Datei ein Array einlesen XML & JSON 10
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
M Liste in Baumstruktur einlesen XML & JSON 4
D nicht (ganz) valiedes XML einlesen! XML & JSON 19
S Einlesen einer xml Datei XML & JSON 4
S XML Datei einlesen, aber root überspringen XML & JSON 2
M XML einlesen - prüfen ob Element vorhanden XML & JSON 2
M NullPointerException bei Einlesen XML XML & JSON 3
J XML - schreiben und einlesen (Schema) XML & JSON 14
S XML Strings in JAVA einlesen, aber wie? XML & JSON 8
K JDOM SAXBuilder einlesen XML & JSON 6
G Newbe - Frage.XML - Datei einlesen und speichern XML & JSON 2
G xml einlesen und bestimmte Elemente an eine gui_Klasse überg XML & JSON 25
B XML String einlesen XML & JSON 4
M mit JDOM XML-Datei einlesen, die nicht "well-formed&quo XML & JSON 3
T Newbie Frage. CSS Stylesheet einlesen und suchen nach Tags XML & JSON 6
P OutOfMemoryError beim Einlesen einer XML-Datei XML & JSON 7

Ähnliche Java Themen

Neue Themen


Oben