Hallo,
ich habe mich in meinem Projekt entschieden eine Datenhaltung mit XML zu machen. Nur weiß ich recht wenig über XML und habe mich mit Googlen etwas rein gefunden. Grundsätzlich verstehe ich XML, nur liegt es an dem Auslesen bzw. Rein schreiben. Es gibt recht viele Beispiele die alle hilfreich sind, nur gibt es wenig Beispiele, wie es mit schwierigeren XML aussieht, als nur eine Person auszulesen.
Hier die XML:
[XML]<?xml version="1.0"?>
<schluesselliste>
<schluessel id="0">
<sc>6030</sc>
<scname>Rentenbeginn/Leistungsart</scname>
<auspraegungen>
<auspraegung id="1">
<ausp>Leistungsart</ausp>
<von>015</von>
<bis>016</bis>
<auspbed>Altersrente fuer Frauen § 237a SGB6</auspbed>
<werte>
<wert id="2">
<name>01</name>
<bed>Keine Ahnung</bed>
</wert>
</werte>
</auspraegung>
</auspraegungen>
</schluessel>
</schluesselliste>[/XML]
Hier der Handler, der die XML Auslesen und die geforderten Daten Zwischenspeichern soll:
Ich habe an dem Code ziemlich viel rum probiert (viel aus verzweiflung). Dieser hat sich andauernd geändert mit wenig Erfolg oder garkein Erfolg... :/
Ausgabe:
Mein Ziel bei der ganzen Geschichte ist, dass er einfach nur die Werte die er da hat in XMLSchlüssel speichern soll. XMLSchlüssel beinhaltet den namen und den numerischen namen (Rentenbeginn/Leistungsart und 6030) und eine ArrayList<Auspraegung>. Diese Liste beinhaltet name, von, bis, bedeutung und eine ArrayList<Wert>. Diese Liste beinhaltet name und bedeutung.
Habt ihr Tipps wie die ganze Geschichte laufen kann?
Danke im Vorraus
ich habe mich in meinem Projekt entschieden eine Datenhaltung mit XML zu machen. Nur weiß ich recht wenig über XML und habe mich mit Googlen etwas rein gefunden. Grundsätzlich verstehe ich XML, nur liegt es an dem Auslesen bzw. Rein schreiben. Es gibt recht viele Beispiele die alle hilfreich sind, nur gibt es wenig Beispiele, wie es mit schwierigeren XML aussieht, als nur eine Person auszulesen.
Hier die XML:
[XML]<?xml version="1.0"?>
<schluesselliste>
<schluessel id="0">
<sc>6030</sc>
<scname>Rentenbeginn/Leistungsart</scname>
<auspraegungen>
<auspraegung id="1">
<ausp>Leistungsart</ausp>
<von>015</von>
<bis>016</bis>
<auspbed>Altersrente fuer Frauen § 237a SGB6</auspbed>
<werte>
<wert id="2">
<name>01</name>
<bed>Keine Ahnung</bed>
</wert>
</werte>
</auspraegung>
</auspraegungen>
</schluessel>
</schluesselliste>[/XML]
Hier der Handler, der die XML Auslesen und die geforderten Daten Zwischenspeichern soll:
Java:
package de.deutscherv.testtool.controller;
import java.util.ArrayList;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import de.deutscherv.testtool.model.Auspraegung;
import de.deutscherv.testtool.model.Wert;
import de.deutscherv.testtool.model.XMLSchluessel;
public class SchluesselContentHandler implements ContentHandler{
private String aktZeile;
private ArrayList<XMLSchluessel> alleSchluessel = new ArrayList<XMLSchluessel>();
private ArrayList<Auspraegung> auspraegungen = new ArrayList<Auspraegung>();
private ArrayList<Wert> werte = new ArrayList<Wert>();
private XMLSchluessel xmlSchluessel;
private Auspraegung auspraegung;
private Wert wert;
private boolean checkVar = true;
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
aktZeile = new String(ch, start, length);
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if(localName.equals("sc")){
xmlSchluessel.setnSc(aktZeile);
}
if(localName.equals("scname")){
xmlSchluessel.setSc(aktZeile);
}
if(localName.equals("ausp")){
auspraegung.setBedeutung(aktZeile);
}
if(localName.equals("von")){
auspraegung.setVon(aktZeile);
}
if(localName.equals("bis")){
auspraegung.setBis(aktZeile);
}
if(localName.equals("auspbed")){
auspraegung.setBedeutung(aktZeile);
}
if(localName.equals("name")){
wert.setName(aktZeile);
}
if(localName.equals("bed")){
wert.setBedeutung(aktZeile);
}
speichereWert(wert);
if(werte != null && auspraegung != null)
auspraegung.setWerte(werte);
speichereAuspraegung(auspraegung);
if(auspraegungen != null)
xmlSchluessel.setAuspraegungen(auspraegungen);
speichereXMLSchluessel(xmlSchluessel);
System.out.println("Sc: " + xmlSchluessel.getSc() + " nSC: "+ xmlSchluessel.getnSc() + " ausp: "+ xmlSchluessel.getAuspraegungen());
}
private void speichereWert(Wert wert){
if(wert != null){
for (Wert checkWert : werte) {
checkVar = checkWert.equals(wert) ? false : true;
}
if(checkVar){
werte.add(wert);
System.out.println("ich habe den Wert " + wert.getName() + " gespeichert!");
}
}
}
private void speichereAuspraegung(Auspraegung auspraegung){
if(auspraegung != null){
for (Auspraegung checkAusp : auspraegungen) {
checkVar = checkAusp.equals(auspraegung) ? false : true;
}
if(checkVar){
auspraegungen.add(auspraegung);
System.out.println("ich habe die Ausprägung: " + auspraegung.getName() + " gespeichert!");
}
}
}
private void speichereXMLSchluessel(XMLSchluessel xmlSchluessel){
if(xmlSchluessel != null){
for (XMLSchluessel checkXML : alleSchluessel) {
checkVar = checkXML.equals(xmlSchluessel) ? false : true;
}
if(checkVar){
alleSchluessel.add(xmlSchluessel);
System.out.println("ich habe den XMLSchlüssel: " + xmlSchluessel.getSc() + " gespeichert!");
}
}
}
@Override
public void endPrefixMapping(String prefix) throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void processingInstruction(String target, String data)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void setDocumentLocator(Locator locator) {
// TODO Auto-generated method stub
}
@Override
public void skippedEntity(String name) throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
if(localName.equals("schluessel")){
xmlSchluessel = new XMLSchluessel();
xmlSchluessel.setId(Integer.parseInt(atts.getValue("id")));
}
if(localName.equals("auspraegung")){
auspraegung = new Auspraegung();
auspraegung.setId(Integer.parseInt(atts.getValue("id")));
}
if(localName.equals("wert")){
wert = new Wert();
wert.setId(Integer.parseInt(atts.getValue("id")));
}
}
@Override
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
// TODO Auto-generated method stub
}
}
Ich habe an dem Code ziemlich viel rum probiert (viel aus verzweiflung). Dieser hat sich andauernd geändert mit wenig Erfolg oder garkein Erfolg... :/
Ausgabe:
Code:
ich habe den XMLSchlüssel: null gespeichert!
Sc: null nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Sc: Rentenbeginn/Leistungsart nSC: 6030 ausp: []
Mein Ziel bei der ganzen Geschichte ist, dass er einfach nur die Werte die er da hat in XMLSchlüssel speichern soll. XMLSchlüssel beinhaltet den namen und den numerischen namen (Rentenbeginn/Leistungsart und 6030) und eine ArrayList<Auspraegung>. Diese Liste beinhaltet name, von, bis, bedeutung und eine ArrayList<Wert>. Diese Liste beinhaltet name und bedeutung.
Habt ihr Tipps wie die ganze Geschichte laufen kann?
Danke im Vorraus
Zuletzt bearbeitet: