XML durchsuchen mittel SAXBuilder

licht400

Mitglied
Hallo,
bin neu hier und hoffe, dass ihr mir helfen könnt.
Lese ein XML -File ein und lade es in ein Jtree. Funktioniert.
Nun möchte ich aber ein bestimmten knoten auslesen. Ich möchte den Knoten link auslesen mit seinen Eigenschaften id und url!
danke im voraus schon!

Am besten ich zeig euch die xml und den Code, den ich bis jetz habe.
XML-File
Code:
<?xml version="1.0"?>
<Hilfe>
	<Einfuehrung>
		<link id="1" url="einfuhrung.html">
			<ueberschrift>Einführung</ueberschrift>
			<inhalt>Seite</inhalt>
		</link>
	</Einfuehrung>
	<Programmbedienung>
		<Ergebnisdarstellung>
			<link id="4" url="ergebnissdarstellung.html">
				<ueberschrift>Menü Ergebnissdarstellung</ueberschrift>
				<inhalt>Seite 3</inhalt>
			</link>
		</Ergebnisdarstellung>
		<Einstellungen>
			<link id="3" url="einstellung.html">
				<ueberschrift>Menue Einstellung</ueberschrift>
				<inhalt>Seite 1</inhalt>
			</link>
		</Einstellungen>
		<Bauteilvorbereitung>
			<link id="2" url="bauteilverbeitung.html">
				<ueberschrift>Bauteilverarbeitung</ueberschrift>
				<inhalt>Seite 1</inhalt>
			</link>
		</Bauteilvorbereitung>
	</Programmbedienung>
</Hilfe>

Code...Programm!
Code:
SAXBuilder sb = new SAXBuilder();
doc = sb.build( "gesamt.xml" ); 
Element used = doc.getRootElement(); 

//------Ab hier versuch ich, den Knoten link mit desen inhalt anzuzeigen!!
for (int j=0; j<used.getChildren().size();j++){
            Element link = (Element) used.getChildren().get(j);
            System.out.println("link: " +link.getChild("link").getValue());
//---------
DefaultMutableTreeNode intro = new DefaultMutableTreeNode(used.getName());
appendChilds(used, intro);//<<---methode zum auslesen (uninteressant für das problem)
System.out.println("used: "+ used+ ", intro: " + intro);
tree = new JTree(intro);
 
So, ich habe es soweit, dass ich bei Einfürhung den Knoten "link" mit desen id und url ausgeben.

Aber bei Programmbedienung muss er noch eine Ebene rein. bsp: Programmbedienung-->Einstellung-->link..wie bekomme ich es noch eine Ebene weiter und nich nur wie bei der Einfürhung.

Code:
SAXBuilder sb = new SAXBuilder();
        doc = sb.build( "gesamt.xml" ); 
        Element used = doc.getRootElement(); 
        Element e = used.getChild("Einfuehrung");
        
        List listlink = e.getChildren("link");
        Iterator linkIterator = listlink.iterator();
        System.out.println("......schleifen beginn");
        while(linkIterator.hasNext()){
            Element linkElement = (Element) linkIterator.next();
           
            for (int i = 0; i < listlink.size() ; i++){
            String id = linkElement.getAttribute("id").toString();
            String url = linkElement.getAttribute("url").toString();
            System.out.println("ergebnis: "+ id);
            System.out.println("ergebnis: "+ url);
            }
 
Vielleicht liest sich das ja jemand abends noch durch!
Eigentlich ändert sich die Struktur immer, von daher wäre es sinnvoll, die Strukur auszulesen und in eine Liste zu speichern!
Und dann nach link und deren id und url zu filtern, aber wie mach ich das den?
 
Ja entweder musst Du eine gewisse Grundstruktur wahren, damit Dein Programm einen geregelten Ablauf hat oder Du musst immer alle Elemente durchgehen und nach den link-Elementen schaun. Ich würde schon eine bestimmte Form in der XML-Datei einhalten.

Es kann aber auch sein, dass ich Dein Problem net so richtig verstanden habe..

Gruß
 
Nunja, man sieht ja die XML oben, wie sie aufgebaut ist!

Das Element "link" dient zum Inhalt des jeweilgigen angeklickten Element.

Und wenn es verschiedene Ebenen gibt, ist das link ELement ja auch verschieden Tief.

Also war meine Idee. Das XML File komplett auslesen und in LIst hinzuzufügen.
In der Liste nach link suchen und deren Eigenschaften "id" und "url" auslesen!

Ich habe zwar das die xml ausgegebn lassen in einem JTREE aber wie es in die die Liste reingeladen wird weiß ich nicht, genauso nicht, wie ich darin nach dem Element suche muss!
 
So habe es selber hinbekommen!
so..

habe eine ausgabe gemacht mit system.out.println, die sieht folgenedermaßen aus:
Die Daten habe ich aus einem Vector geholt...

id=1, asd.html
id=2, adas.html
....

nun wollte ich sagen, wenn id = 1 , dann gibt mir die url!

also: vzusammen, ist der Vector wo der inhalt ist!

Code:
if (vzusammen.equals("1")){
                    System.out.println("url zu 1: " + url);
                    }else
                        System.out.println("keine url");
            }
aber ständig kommt als ausgabe , keine url, warum?
 
Zurück