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
JAVA -> SaxTest.java
Ich habe das Problem das ich es nicht einlesen kann!
Kann mir da jemand weiterhelfen?
Danke:rtfm:
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: