Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Ausschreibungssprachen und clientseitige Programmierung > HTML, XML und CSS > Einfachste Möglichkeit zum Lesen von XML in Java
Antwort
 
Themen-Optionen
Alt 30.05.2004, 22:31   Nach oben    #1
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard Einfachste Möglichkeit zum Lesen von XML in Java

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;
?>
Gibt es etwas vergleichbares für Java?

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.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 12:35   Nach oben    #2
bischi
Neuer Benutzer
 
Registriert seit: 27.05.2004
Beiträge: 25
Standard

Also lesen kannst du die Datei wie jede andere Textdatei auch. Was kann eigentlich XML noch speziell alles? Für was ist es wirklich gut?

MfG Bischi
bischi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 13:34   Nach oben    #3
Sym
Chefkoch-Mod
 
Benutzerbild von Sym
 
Registriert seit: 30.05.2004
Beiträge: 433
Standard

Zitat:
Zitat von bischi
Was kann eigentlich XML noch speziell alles? Für was ist es wirklich gut?

MfG Bischi
Look right here: http://selfhtml.teamone.de/xml/intro.htm
__________________
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
Sym ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 17:29   Nach oben    #4
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

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?
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 17:39   Nach oben    #5
shabazza
Gast
 
Beiträge: n/a
Standard

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
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 19:38   Nach oben    #6
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

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();
		}
	}
}
Wäre nett, wenn mir jemand meine Fehler aufzeigen könnte. Wie gesagt, mit Dom hab ich nur in Zusammenhang mit Javascript Kontakt gehabt. ^^"


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. ^^"
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 20:04   Nach oben    #7
peschmae
Erfahrener Benutzer
 
Benutzerbild von peschmae
 
Registriert seit: 29.05.2004
Beiträge: 228
Standard

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
peschmae ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 20:17   Nach oben    #8
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

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:
Das was felschlägt ist auf jeden Fall diese Zeile - und zwar der Parse-Aufruf.
Diese Zeile hatte ich direkt vom Beispiel auf dieser Seite kopiert.
Wie müsste ich ihn den Aufrufen?
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 21:26   Nach oben    #9
shabazza
Gast
 
Beiträge: n/a
Standard

@Dragon
Was spuckt die sache den aus? Wirft das eine Exception, dann poste mal den stacktrace, oder gibt der vielleicht "null" aus.
poste mal die strucktur der xml file.
um mal ein zitat von didi Hallervorden zu bringen:"Ich brauche mehr details"

cu
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 22:21   Nach oben    #10
peschmae
Erfahrener Benutzer
 
Benutzerbild von peschmae
 
Registriert seit: 29.05.2004
Beiträge: 228
Standard

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
peschmae ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.05.2004, 23:52   Nach oben    #11
shabazza
Gast
 
Beiträge: n/a
Standard

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
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.06.2004, 11:04   Nach oben    #12
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

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
Der reicht im Prinzip aus, ist auch nicht zu langsam (weil nur kleine Dateien geladen werden), aber ist für meinen Geschmack nicht flexibel genug.

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();
      }
   }
}
Ich weiß, dass das nicht wirklich gut aussieht, aber das kommt noch, wenn ich mich etwas mehr eingelebt habe.

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:
Ach ja, und ich hab 1.5.0Beta - zum Glück.
Ich wollte es heute auch mal installieren.
Ä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:
man kann sie auch mit eine Texteditor bearbeiten.
Kann man XML auch.
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.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.01.2005, 23:00   Nach oben    #13
Fuzzy
Gast
 
Beiträge: n/a
Standard einfachste Möglichkeit...

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/
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:16 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44