XML Jaxen Attribute auslesen

eQuest

Mitglied
Hi Community,
ich schreibe gerade an einem Programm, welches Daten aus einer XML einliest und dann weiter verarbeitet. Die Struktur der XML sieht wie folgt aus:
Code:
<Schule>
  <Abteilung>
    <Klasse Bezeichnung="">
      <Schueler>
        <Adresse />
      </Schueler>
    </Klasse>
  </Abteilung>
</Schule>

Nun will ich erstmal die Bezeichnung aller Klassen auslesen.
Java:
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		Node doc = builder.parse(new InputSource(new FileInputStream("liste.xml")));
		XPath xpath=new DOMXPath("/Schule/Abteilung/Klasse/@Bezeichnung");
		gui.setList1(new JList(xpath.selectNodes(doc).toArray()));

Leider steht im Ergebnis immer wieder auch die Attributbezeichnung drinnen, obwohl mich eigentlich nur der Wert interessiert (also immer wieder Bezeichnung="...", Bezeichnung="...", etc). Wie schaffe ich es, dass nur der Wert ausgelesen wird?

mfg
 
selectNodes liefert dir eben eine Liste mit den Nodes..da steckt eben beides drinnen. Du kannst aber eben die Elemente auf DeferredAttrImpl/Node casten und dann die Methode getValue benutzen um so an den Wert zukommen.
Du könntest also so etwas wie das Folgende machen, anstelle von deinem [c]gui.setList1(new JList(xpath.selectNodes(doc).toArray()));[/c]
Java:
		List<DeferredAttrImpl> nodes = xpath.selectNodes(doc); //hier vllt @SuppressWarnings("unchecked") annotation dran :)
		String[] arr = new String[nodes.size()];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = nodes.get(i).getValue();
		}
		gui.setList1(new JList(arr));

oder du lässt eben das "Umkopieren" (bzw eben das Erstellen des Arrays) in ein String-Array komplett weg und benutzt einfach direkt die Liste und implementierst dein eigenes ListModel...aber das wäre jetzt wieder ein anderes Thema.

Also Zusammenfanssend: selectNodes liefert eine Liste von DeferredAttrImpl-Objekten. Diese haben unteranderem die Methode getValue / getNodeValue , getName usw., welche du benutzen kannst. (evtl. casten notwendig!)

Hoffe das hilft dir weiter
 
Zuletzt bearbeitet:

Zurück
Oben