![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Hi.
Da ich generell nur wenig mit XML gearbeitet habe, es nun aber doch benötige, suche ich eine einfache API zum lesen von XML-Daten. In PHP (mit dem ich deutlich mehr Erfahrung habe) verwende ich gerne die SimpleXML-API. Damit sähe das Auslesen einer XML-Datei so aus: Code:
<?php
$xml = simplexml_load_file('datei.xml);
echo $xml->element;
?>
Alternativ wäre ein (wirklich gutes) Tutorial für XML in Java auch hilfreich. Mit dem aus dem Java-Tutorial kann ich mich leider nicht wirklich anfreunden. Danke schonmal. |
|
|
|
|
|
Nach oben #3 | |
|
Chefkoch-Mod
Registriert seit: 30.05.2004
Beiträge: 433
|
Zitat:
__________________
Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
|
|
|
|
|
|
Nach oben #4 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Das einlesen ist mir auch klar, nur habe ich nur bedingt Lust mir einen eigenen XML-Parser zu schreiben.
Alternativ würde mir ja auch schon ein Beispiel für DOM reichen. Mit DOM in Javascript konnte ich recht gut klar, nur finde ich einfach kein brauchbares Tutorial diesbezüglich in Java. Vielleicht kann mir ja auch jemand ein Beispiel anbieten? |
|
|
|
|
|
Nach oben #5 |
|
Gast
Beiträge: n/a
|
hej,
xml unter java ist recht einfach, kann man mit den sdk eigenen tools machen, dafür schau mal hier nach (http://javaalmanac.com/egs/javax.xml.parsers/pkg.html) für einfache sachen 100%ig ausreichen, wenn es komplizierter wird schau mal bei google unter jdom nach und wenn du was ganz wildes machen willst dann würde ich jaxb entfehlen ist bestanteil des Webservice developer packs von sun, ist aber auch ein paar megabyte groß. cu shabazza |
|
|
|
Nach oben #6 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Das hat mir, glaube ich, den Einstieg ermöglicht.
Also, folgendes Beispiel müsste "Test" ausgeben, oder? Code:
public class DomTest {
public static void main(String args[]) {
try {
/*
* file.xml hat folgende Struktur:
* <document>
* <element>Test</element>
* </document>
*/
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringComments(true);
Document doc = factory.newDocumentBuilder().parse(new File("file.xml"));
Element e = doc.getDocumentElement();
System.out.println(e.getFirstChild().getNodeValue());
} catch(Exception e) {
e.printStackTrace();
}
}
}
Achso... ich brauche tatsächlich nichts weltbewegendes. Ich möchte nur meine Konfiguration in XML speichern, ist komfortabler als meine momentane (PHP-INI) nachempfundene Version. Zumal wohl auch einfacher, wenn es tatsächlich so klappt wie bei meinem Beispiel oben. ^^" |
|
|
|
|
|
Nach oben #7 |
|
Erfahrener Benutzer
Registriert seit: 29.05.2004
Beiträge: 228
|
wäre nett wenn du jeweils Code mit den Import-Sachen posten würdest
Das was felschlägt ist auf jeden Fall diese Zeile - und zwar der Parse-Aufruf. das File ist in Ordnung, der DocumentBuilder auch. Document doc = factory.newDocumentBuilder().parse(new File("file.xml")); Auf jeden Fall bietet Java die Klasse Preferences für die Einstellungsspeicherung an. Ich würd mir die mal angucken - kann ganz verschiedene Backends haben (Datei, MySQL-Datenbank, etc) http://java.sun.com/j2se/1.5.0/docs/...eferences.html MfG Peschmä
__________________
Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM "We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth |
|
|
|
|
|
Nach oben #8 | |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Deine Klasse scheint es erst ab 1.5 zu geben, ich arbeite jedoch (aus mehreren Gründen) mit 1.4.
Das import hatte ich wohl zu kopieren vergessen. Sorry. ^^" Code:
import org.w3c.dom.*; Zitat:
Wie müsste ich ihn den Aufrufen? |
|
|
|
|
|
|
Nach oben #10 |
|
Erfahrener Benutzer
Registriert seit: 29.05.2004
Beiträge: 228
|
Keine Exception, der parse()-Aufruf liefert NULL zurück.
Ach ja, und ich hab 1.5.0Beta - zum Glück. MfG Peschmä
__________________
Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM "We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth |
|
|
|
|
|
Nach oben #11 |
|
Gast
Beiträge: n/a
|
ich bin so ein bischen langsam,
also wenn der parser null zurückgibt würde das ja bedeuten das Document wäre null und wenn das wäre würde die jvm eine Nullpointerexception werfen, und zwar beim aufruf "doc.getDocumentElement()". Aber wenn auf der konsole einfach nur null steht dann hat das eine ganz andere bedeutung, und zwar das das parsen der datei funktioniert, aber es stimmt was nicht im der struktur der xml datei denn ".getNodeValue" gibt null zurück falls der tag einen falschen typ hat. Deswegen wäre es gut die datei zu kenne. Ein guter freund(c++programmiere) von mir sagte mal, also er gerade auf xml schimpfte, das es nicht immer sinnvoll ist eine xmldatei zu benutzen. Wenn die Datei nur wenige parameter enthält und vielleicht auch keine sequenzen von gleichen typen, dann ist es performanter eine properties datein zu nehmen, da man dann nicht den ganzen xml overhead hat und man kann sie auch mit eine Texteditor bearbeiten. shabby grüßt |
|
|
|
Nach oben #12 | ||
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
So.... nach knapp 1ner Stunde rumfummeln habe ich es nun geschafft den Inhalt einer Node auszulesen (und zu ändern)... ^^"
Um nochmal zu erklären: Ich habe bislang einen eigenen Parser verwendet, der INI-Syntax (einschliesslich Sections) akzeptiert. Beispiel: Code:
; Die URL zum Javabuch javabuch_url=file:///%root%/javabuch/cover.html javatutorial_url=file:///%root%/tutorial/index.html javadoc_url=file:///%root%/docs/index.html ; Farben für Syntax-Highlight... (in HEX) color_operator = #FF0000 color_variable_value = #FF0E20 color_variable_type = #000054 color_variable_value_spec = #000054 color_statement = #000054 color_modifier = #000054 color_punctation = #000054 color_special = #ABABAB color_declaration = #000054 Deswegen möchte ich derartiges nach XML umstellen. Nachdem ich nun verstanden habe, wie es funktioniert, werde ich mir (wie immer) ein paar Klassen erstellen, die mir den Umgang vereinfachen. Das obige Beispiel in funktionierender Form: Code:
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
public class DomTest {
public static void main(String args[]) {
try {
/*
* file.xml hat folgende Struktur:
* <document>
* <element>Test</element>
* </document>
*/
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringComments(true);
Document doc = factory.newDocumentBuilder().parse(new File("file.xml"));
Node e = doc.getDocumentElement().getElementsByTagName("element").item(0);
System.out.println(((CharacterData)e.getFirstChild()).getData());
((CharacterData)e.getFirstChild()).setData("Testen");
System.out.println(doc.getDocumentElement().toString());
} catch(Exception e) {
e.printStackTrace();
}
}
}
Das Problem von mir war einfach, dass ich nicht wusste, wie ich auf den Inhalt eines Elementes zugreifen kann. Wie gesagt: Das ist mir nun klar. Zitat:
Ändert aber nichts daran, dass mein Informatik-Lehrer noch 1.3 auf den Schul-PC's hat. Und der möchte gerne ab und an mein Programm (Schulprojekt) sehen. (was sowieso schon blöd ist, weil ich immer für 1.4 (Reguläre Ausdrücke) am entwickeln bin...). Zitat:
Ansonsten gebe ich dir natürlich recht. Nur ist es halt in meinem Fall sinnvoller eine XML-Datei zu verwenden. Abgesehen davon halte ich XML für sehr wichtig und möchte daher auch in Java den Umgang damit lernen. Wer weiß, ob ich nicht irgendwann dazu gezwungen werde mit Java und XML zu arbeiten? Danke für eure Hilfe. Wenn ich, bei meinen weiteren Übungen, noch Hilfe brauchen sollte, melde ich mich. |
||
|
|
|
|
|
Nach oben #13 |
|
Gast
Beiträge: n/a
|
Nun ist der Thread zwar schon ein halbes Jahr alt aber vielleicht liest ihn ja doch noch mal jemand
Die einfachste mit bekannte Möglichkeit, in Java auf XML zuzugreifen ist nach wie vor dom4j. Die Library ist sehr viel komfortabler als SAX oder DOM. Einfach mal reinschauen. http://www.dom4j.org ... und die wohl schnellste Möglichkeit die auch noch gut verständlich ist ist der XML Pull Parser, der die XML-Datei quasi in Tokens aufteilt, die man der Reihe nach abholen kann. http://www.extreme.indiana.edu/xgws/xsoap/xpp/ |
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| xml parsing | nove | HTML, XML und CSS | 10 | 16.07.2005 07:43 |
| Java 5: XML mit DomParser und DTD | elninio2000 | HTML, XML und CSS | 0 | 11.03.2005 17:09 |
| [BUCH] Java ist auch eine Insel | kampet | Literatur | 5 | 22.02.2005 14:40 |
| Zwist um Java als Open Source | kampet | Nachrichten | 0 | 05.07.2004 03:37 |