XML - JDOM - Bäume: was würdet ihr hier machen?

Status
Nicht offen für weitere Antworten.

esmeralda

Mitglied
Ich hänge momentan über einem Projekt, in dem ich Sätze in XML-Form nach bestimmten Phrasen (Teilsätzen) durchsuchen muss. Die Sätze (in Japanisch) sind als XML-Datei vorhanden. Dummerweise ist die Struktur nicht so optimal, wie sie sein sollte. Die Satzstruktur ist ja normalerweise wie ein Baum aufgebaut und wäre somit für XML auch denk ich bestens geeignet. In der Datei ist es aber so, dass die Baumstruktur nur über Verweise realisiert wurde. Hier mal einen Beispielsatz:

[XML]<sentence id="s6">
<word form="sou" pos="ADVdem" morph="--" func="COMP" parent="500" comment=""></word>
<word form="shitara" pos="Vcnd" morph="--" func="HD" parent="500" comment=""></word>
<word form="toriaezu" pos="ADVtmp" morph="--" func="ADJ" parent="502" comment=""></word>
<word form="mazu" pos="ADVtmp" morph="--" func="ADJ" parent="502" comment=""></word>
<word form="sukejuuru" pos="NN" morph="--" func="COMP" parent="501" comment=""></word>
<word form="kara" pos="P" morph="--" func="HD" parent="501" comment=""></word>
<word form="kimenai" pos="VADJi" morph="--" func="HD" parent="502" comment=""></word>
<word form="to" pos="PSSa" morph="--" func="HD" parent="503" comment=""></word>
<word form="ikenai" pos="ADJifin" morph="--" func="HD" parent="504" comment=""></word>
<word form="no" pos="NF" morph="--" func="HD" parent="505" comment=""></word>
<word form="desu" pos="PVfin" morph="u" func="HD" parent="506" comment=""></word>
<word form="ne" pos="PSE" morph="--" func="MRK" parent="507" comment=""></word>
<word form="." pos="." morph="--" func="--" parent="0" comment=""></word>
<node num="500" cat="VPcnd" func="ADJ" parent="508" comment=""></node>
<node num="501" cat="PP" func="COMP" parent="502" comment=""></node>
<node num="502" cat="AP" func="COMP" parent="503" comment=""></node>
<node num="503" cat="SS" func="COMP" parent="504" comment=""></node>
<node num="504" cat="AP" func="COMP" parent="505" comment=""></node>
<node num="505" cat="NP" func="COMP" parent="506" comment=""></node>
<node num="506" cat="VPfin" func="HD" parent="507" comment=""></node>
<node num="507" cat="S" func="HD" parent="508" comment=""></node>
<node num="508" cat="S" func="--" parent="0" comment=""></node>
</sentence
>[/XML]

Wie man sehen kann sind die Verweise hier das Attribut "parent". Wenn ich es richtig interpretiere, würde eine besser geschachtelte XML-Datei folgendermaßen aussehen:

[XML]<sentence id="s6">

<node cat="S" func="--" comment="">
<node cat="VPcnd" func="ADJ" comment="">
<word form="sou" pos="ADVdem" morph="--" func="COMP" comment=""></word>
<word form="shitara" pos="Vcnd" morph="--" func="HD" comment=""></word>
</node>
<node cat="VPfin" func="HD" comment="">
<node cat="NP" func="COMP" comment="">
<node cat="AP" func="COMP" comment="">
<node cat="SS" func="COMP" comment="">
<node cat="AP" func="COMP" comment="">
<word form="toriaezu" pos="ADVtmp" morph="--" func="ADJ" comment=""></word>
<word form="mazu" pos="ADVtmp" morph="--" func="ADJ" comment=""></word>
</node>
<node cat="AP" func="COMP" comment="">
<node cat="PP" func="COMP" comment="">
<word form="sukejuuru" pos="NN" morph="--" func="COMP" comment=""></word>
<word form="kara" pos="P" morph="--" func="HD" comment=""></word>
</node>
<word form="kimenai" pos="VADJi" morph="--" func="HD" comment=""></word>
</node>
<word form="to" pos="PSSa" morph="--" func="HD" comment=""></word>
</node>
<word form="ikenai" pos="ADJifin" morph="--" func="HD" comment=""></word>
</node>
<word form="no" pos="NF" morph="--" func="HD" comment=""></word>
</node>
<word form="desu" pos="PVfin" morph="u" func="HD" comment=""></word>
</node>
<word form="ne" pos="PSE" morph="--" func="MRK" comment=""></word>
<word form="." pos="." morph="--" func="--" comment=""></word>
</node>

</sentence>[/XML]

Nun die eigentliche Fragestellung: Ich bin mir unsicher, wie ich das Ganze am Besten umsetzen soll. Ich wollte mit JDOM arbeiten und so schon mal die Ursprungsdatei einlesen. Die nun aber irgendwie in die neue Schachtelung umbauen? Oder lieber einen ganz anderen Ansatz in Java mit einer Baum-Datenstruktur? Hab in dem Bereich noch nicht wirklich programmiert und da bin ich noch unsicher, wie ich das Alles angehen soll. Was würdet Ihr denn machen? Ich würde mich über Tipps und Anregungen freuen :).

oO(ich hoffe, ich konnte das halbwegs verständlich erklären :oops:)
 

Noctarius

Top Contributor
Wenn du eh einen Reader bauen musst (du willst ja umwandeln) dann kannst du doch auch gleich das Originalformat behalten. Was bringt dir das neue Format an Vorteil (außer dass das Alte echt hässlich ist aber das stört den Reader ja nicht)?
 

esmeralda

Mitglied
Naja, das Problem an dem Originalformat ist, dass es komplizierter zu durchsuchen ist. Ich muss z.B. den Teilbaum finden, der nur zu cat="NP" gehört. In der Originalfassung muss ich dann erst sämtliche Verweise durchlaufen, um die Struktur zu erkennen. In der schön strukturierten Fassung muss ich einfach nur nach dem Knoten "node" mit cat="NP" suchen und nehme die darunter liegenden Knoten ebenfalls dazu. Das war zumindest mein Gedankengang.
 

esmeralda

Mitglied
JPath? Ist das XPath für Java, oder was? Kenn mich noch nicht wirklich aus und bin wie gesagt erst mal nach Möglichkeiten am Suchen. Wo wird denn JPath gut erklärt? Hab bei Google und im Forum jetzt nicht wirklich was gefunden...
 

musiKk

Top Contributor
Argh. Freudscher Verschreiber. Auch wenn JPath ein naheliegender Name für eine XPath-Implementierung in Java ist, meinte ich eigentlich XPath, sorry. Wollte Dich nicht durcheinander bringen.
Es klang nur, als würdest Du das Dokument manuell durchsuchen. Mit XPath sollte das eigentlich recht einfach gehen.
 

esmeralda

Mitglied
Danke ^_^. Bin mich jetzt ein bisschen in XPATH am Einlesen und bin gespannt, wie ich damit weiterkomme. Hab Ewigkeiten nichts mehr mit Java programmiert und da brauch man doch eine gute Weile, bis man wieder halbwegs frustfrei programmieren kann ;-). Also los mit XPATH ^___^.
 

esmeralda

Mitglied
Okay, ich versuche mich nun unteranderem an XPATH und bin mal wieder total demotiviert. Ich möchte einfach mal testhalber aus der ersten XML-Datei oben nur die Elemente "node" mit cat="NP" raussuchen. Hab ein kleines Programm zusammengebastelt, aber es klappt vorne und hinten nicht =_=. Hier mal mein bisheriger Code

Java:
import java.io.IOException;
import java.util.List;
import org.jdom.Document;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.xpath.*;


public class jDOMXPATH {


	public static void main(String[] args) {
		
		SAXBuilder builder = new SAXBuilder();  // Build a document ...  
		Document doc = null;
		try {
			doc = builder.build("cd25.xml");
		} catch (JDOMException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  // ... from a file
		try {
			List ergebnis = XPath.selectNodes( doc, "/sentence//node[@cat='NP']" );
		} catch (JDOMException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		XMLOutputter output = new XMLOutputter();  // And output the document ... 
		try {
			output.output(doc, System.out);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  // ... unchanged to System.out
                           

	}

}

Als Fehlermeldung kommt dann folgendes:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at org.jdom.xpath.XPath.newInstance(XPath.java:134)
at org.jdom.xpath.XPath.selectNodes(XPath.java:345)
at jDOMXPATH.main(jDOMXPATH.java:27)

Was mach ich alles falsch? Schon mal vielen Dank fürs Draufschauen.
 

ARadauer

Top Contributor
wo hast du das code beispiel her?
org/jaxen.. was ist das für ein seltsames Package. Ist nicht ein Dom Parser in der Standard api vorahnden?
 

musiKk

Top Contributor
Man kann seine Beiträge übrigens bearbeiten. Bei zwei Minuten ist ein Doppelpost Quatsch...

Anyway. Wenn auf JDOM verzichtet werden kann, gibt es eine XPath-Implementierung in javax.xml.xpath. Wenn es JDOM sein muss, muss jemand anderes ran. Laut Doku muss allerdings erstmal eine Implementierung ausgewählt werden.
 

esmeralda

Mitglied
Wiedermal Danke für die Antwort :). Ja - ich muss noch einiges nacharbeiten... Den Code hatte ich nach einigem Nachschlagen selber programmiert, das Galileo Buch hab ich auch bereits gelesen. Aber Theorie und Praxis sind ja doch immer 2 verschiedene Paar Schuhe. Man muss erst selber Fehler machen, um es selber richtig zu lernen:oops:.

Den Fehler hab ich gefunden - muste im Classpath noch 2 jars einbinden. So wirft er mir jetzt keine Fehler mehr. Jetzt muss ich weiter daran arbeiten, dass auch das gewünschte Ergebnis rauskommt. javax.xml.xpath klingt schon mal sehr gut - hatte mir dazu schon was angesehen. Also nochmal Danke für die Ratschläge - bin für jede Hilfe dankbar :).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JDOM oder SAX XML & JSON 3
Hijo2006 Grundsätzliches zu JDOM 2.x XML & JSON 1
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S JDom XML ein Element hinzufügen. XML & JSON 1
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
J JDOM XMLOutputter getPrettyFormat() XML & JSON 3
H JDOM setAttribute Reihenfolge XML & JSON 3
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
F Aus XML mit JDOM aus Elementattributen Werte rauslesen XML & JSON 4
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
C xml validierung gegen xsd mit jdom: Fehlermeldung Cannot find the declaration of element ... XML & JSON 8
T Dom, Jdom, Sax XML & JSON 8
Helgon MalformedByteSequenceException und null JDOM Attribute XML & JSON 5
Helgon JDOM schreibt nicht XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
G xml, jdom "Entität wurde referenziert aber nicht deklariert." XML & JSON 4
A XSL und JDom XML & JSON 3
G jdom-Klassen in Eclipse importieren XML & JSON 2
S JDOM ohne XML Header erzeugen? XML & JSON 2
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
S JDOM nur Attribut Name XML & JSON 2
X JDom für SOAP Dateien geeignet? XML & JSON 3
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
M XML Parsen JDOM NullPointerEcxeption XML & JSON 7
S jdom hasChildren()? XML & JSON 1
T Frage zu getContent unter jdom XML & JSON 6
Z Tutorial für JDOM (XSD-Shema) XML & JSON 3
D jdom, xml, login-system XML & JSON 4
N JDOM: XML einlesen XML & JSON 4
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
lordcarlos jdom zu iso-8859-15 zwingen XML & JSON 4
P jdom XML-Encoding auslesen XML & JSON 12
E JDOM - letzem child Attribut hinzufügen XML & JSON 4
H Schema-Validierung mit JDOM XML & JSON 2
lordcarlos JDOM und entfernen von children XML & JSON 4
E JDOM - Problem beim Zusammenfügen zweier Dateien XML & JSON 2
T jdom.jar als Relativer Pfad in Eclipse einbinden XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
S XML, UTF-8, JDOM und Umlaute XML & JSON 3
A JDOM: Wert schreiben bzw. ändern XML & JSON 6
T JDOM Bibiliothek XML & JSON 3
K JDOM vs. DOM, Schnittstellen XML & JSON 5
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
0x7F800000 jdom mit xml.transform inkompatibel, was soll ich nehmen? XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
A JDOM und Sonderzeichen < > XML & JSON 17
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
S Ampersand im Jdom-Element XML & JSON 2
N jdom - xslt-Verweis in .xml einfügen XML & JSON 3
S Jdom+java webstart XML & JSON 4
K html -> cyberneko -> xml -> jdom . XML & JSON 3
I JDom Text ändern XML & JSON 4
C jdom.Element nicht vorhanden? XML & JSON 4
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
C XPath in JDOM klappt nicht XML & JSON 2
S Harte Nuss mit XML und JDOM XML & JSON 2
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
B jdom: getChildren() problem XML & JSON 4
T Bild in XML per JDOM XML & JSON 4
D JDOM erzeugt leere xmlns Attribute XML & JSON 4
T Elemente zählen mit JDOM in XML XML & JSON 7
B jdom document aus string erzeugen? XML & JSON 1
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
T XML mit JDOM auslesen => langsam? XML & JSON 7
B jdom outputter ohne attribute XML & JSON 2
C XML encoding UTF-8 und JDOM XML & JSON 4
P Probleme mit JDom . addContent(int index,Collection c) XML & JSON 2
R key aus xml lesen mittels jdom XML & JSON 5
M JDOM Element ohne Inhalt kopieren ? XML & JSON 3
X JDOM SAXBuilder Validationschema - Problem XML & JSON 8
G einzelne tags mit jdom auslesen XML & JSON 4
F XML ( ca. 280 MB) JDom & SAXBuilder lesen = OutOfMemoryE XML & JSON 4
K JDOM SAXBuilder einlesen XML & JSON 6
S Ausgabe "asXML" mit Jdom XML & JSON 2
B Element an bestimmter Stelle einfügen (JDOM) XML & JSON 8
G XML mit JDOM ausgeben [Klappe die 1Mio.ste] XML & JSON 2
F XML mit JDOM auslesen XML & JSON 2
D JDOM auf den PC machen XML & JSON 6
J JDOM Unicode XML & JSON 2
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
P JDOM Werte verändern XML & JSON 4
S OutOfMemory mit JDOM XML & JSON 6
S org.jdom.document in String umwandeln. XML & JSON 2
M ISO-8859-1 >> UTF-8 + JDOM + Verwirrung. XML & JSON 2
J [Newbie] [JDOM] Element aus XML entfernen klappt nicht XML & JSON 4
J JDOM mit XML-Schema XML & JSON 8
P HTML-Sting in JDOM XML & JSON 7
B JDOM && ObjectOutputStream XML & JSON 8
B Versionskonflikt bei JDOM XML & JSON 9
B JDom -- getChild() liefert nicht nachvollziehbar null XML & JSON 2
M JDOM parse Exception XML & JSON 3
G JDom encoding ändern XML & JSON 2
R JDOM Root-Element entfernen aber Rest behalten XML & JSON 10
M XML Elemente mit JDOM durch Text ersetzen XML & JSON 2
R Problem bei Erstellung von XML(JDOM) XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben