# XML Datei zu DOM-Baum



## newbeet (27. Mai 2010)

Hallo,

ich möchte gerne XML-Dateien parsen, in einen DOM-Baum wandeln und dann den Text-Content in einen String schreiben.

Leider scheitere ich schon beim parsen der xml-Dateien. Es hat bisher nur bei einer xml-Datei geklappt, daher wäre ich für Hilfe unendlich dankbar!

Hier erstmal der Teil des Programms:


```
public static void main( String[] argv )
  {
    if( argv.length != 1 )
    {
      System.err.println( "Usage:   java ExampleDomShowNodes <XmlFile>" );
      System.err.println( "Example: java ExampleDomShowNodes MyXmlFile.xml" );
      System.exit( 1 );
    }
    try {
      // ---- Parse XML file ----
      DocumentBuilderFactory factory  = DocumentBuilderFactory.newInstance();
      DocumentBuilder        builder  = factory.newDocumentBuilder();
      Document   document = builder.parse( new File( argv[0] ) );
```


Die Fehlermeldung die ich erhalte sind folgende (die Datei existiert aber definitv, mit einer funktioniert es ja auch):



> java.io.FileNotFoundException: C:\Users\Anja\JahoogleIndexer\dbmini.dtd (Das Sys
> tem kann die angegebene Datei nicht finden)
> at java.io.FileInputStream.open(Native Method)
> at java.io.FileInputStream.<init>(Unknown Source)
> ...




Eine Beispiel XML-Datei bei der es nicht funktioniert ist z.B. folgende:


```
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?xml-stylesheet type="text/css" href="dbmini.css" ?>
<!DOCTYPE book SYSTEM "dbmini.dtd">

<book xmlns="http://xml.cy55.de/namespaces/dbmini">
<bookinfo>
  <title>XML in 10 Punkten</title>
  <copyright><year>1999-2001</year><holder>W3C (MIT, ERCIM, Keio)</holder></copyright>
  <author><firstname>Bert</firstname><surname>Bos</surname></author>
</bookinfo>

<preface>
  <para><emphasis>XML, XLink, Namespace, DTD, Schema, CSS, XHTML ...</emphasis> Wenn XML für Sie neu ist, wissen Sie womöglich kaum, wo sie anfangen sollen. Die vorliegende Zusammenfassung in 10 Punkten versucht, soviel Grundlagen zu vermitteln wie notwendig sind, um einen Anfänger in die Lage zu versetzen, den Wald trotz Bäumen zu sehen. Und wenn Sie einen Vortrag über XML halten, warum nicht mit diesen 10 Punkten beginnen?</para>
</preface>

<chapter>
<section>
  <title>1. XML steht für strukturierte Daten</title>

  <para>Strukturierte Daten findet man z.B. in so unterschiedlichen Dingen wie Kalkulationstabellen, Adressbücher, Konfigurationsparameter, finanzielle Transaktionen und technische Zeichnungen. XML ist ein Satz an Regeln (man kann ebenso von Richtlinien oder Konventionen sprechen) für die Erstellung von Textformaten zur Strukturierung solcher Daten. XML ist keine Programmiersprache und man braucht auch kein Programmierer zu sein, um XML zu benutzen oder zu lernen. XML erleichtert es einem Computer, Daten zu generieren oder zu lesen und sorgt dafür, dass eine bestimmte Datenstruktur eindeutig bleibt. XML vermeidet herkömmliche Fallen, wie sie in anderen Sprachkonstruktionen auftreten: XML ist erweiterbar, plattformunabhängig und unterstützt Internationalisierung / Lokalisierung und <ulink url="http://www.unicode.org/">Unicode</ulink>.</para>
</section>

<section>
  <title>2. XML sieht ein wenig wie HTML aus</title>

  <para>Wie HTML verwendet XML Tags (durch '&lt;' und '>' geklammerte Wörter) und Attribute (der Form name="value"). Während HTML festlegt, was jedes Tag und Attribut bedeutet, und oft wie der Text dazwischen in einem Browser aussieht, benutzt XML die Tags nur zur Abgrenzung von Daten und überlässt die Interpretation der Daten allein der Anwendung, die sie verarbeitet. Mit anderen Worten: wenn Sie "&lt;p/>" in einer XML-Datei sehen, sollten Sie nicht annehmen, dass es sich um einen Absatz (englisch: paragraph) handelt. Je nach Kontext kann es ein Preis, ein Parameter, eine Person, ein(e) P.... sein (übrigens, wer sagt denn, dass es ein Wort mit einem "p" sein muss?).</para>
</section>

<section>
  <title>3. XML ist Text, aber nicht zum Lesen</title>

  <para>Programme, die Kalkulationstabellen, Adressbücher und andere strukturierte Daten produzieren, speichern diese Daten meist auf der Festplatte, wobei sie entweder ein Binär- oder ein Textformat verwenden. Ein Vorteil des Textformats ist es, dass man sich auf diese Weise die Daten ansehen kann, ohne das produzierende Programm selbst zu verwenden; kurz gesagt: man kann es mit jedem beliebigen Texteditor lesen. Ferner vereinfacht reiner Text dem Entwickler das Debuggen von Anwendungen. Genau wie bei HTML, bestehen XML Dateien aus reinem Text, der zwar von Menschen nicht gelesen werden sollte, aber gelesen werden kann, wenn es notwendig ist. Anders als bei HTML, sind die Regeln bei XML strikt. Ein weggelassenes Tag oder ein Attribut ohne Anführungszeichen, machen eine XML Datei unbenutzbar, während dies bei HTML toleriert und oftmals explizit erlaubt wird. Die offizielle XML Spezifikation verbietet es Anwendungen, erst hinterher Warnmeldungen anzuzeigen, falls sie auf fehlerhafte XML Dateien stossen sollten; ist die Datei fehlerhaft, hat die Anwendung an dieser Stelle anzuhalten und eine Fehlermeldung auszugeben.</para>
</section>

<section>
  <title>4. XML ist vom Design her ausführlich</title>

  <para>Da XML ein Textformat ist und Tags verwendet, um die Daten abzugrenzen, sind XML-Dateien fast immer größer als vergleichbare binäre Formate. Das war eine bewusste Entscheidung der XML-Entwickler. Die Vorteile eines Textformats sind klar (siehe oben), und die Nachteile können meistens an anderer Stelle ausgeglichen werden. Plattenplatz ist nicht mehr so teuer wie früher, und Programme wie zip und gzip können Dateien sehr gut und sehr schnell komprimieren. Außerdem können Kommunikationsprotokolle wie Modemprotokolle und HTTP/1.1 (das Kernprotokoll des Webs) Daten automatisch komprimieren und damit ebenso effektiv Bandbreite sparen wie ein binäres Format.</para>
</section>

<section>
  <title>5. XML ist eine Familie von Techniken</title>

  <para><ulink url="http://www.w3.org/TR/REC-xml">XML 1.0</ulink> ist die Spezifikation, die definiert, was "Tags" und "Attribute" sind. Hinter XML 1.0 steht die "XML Familie" als ein wachsender Satz an Modulen, der nützliche Serviceleistungen für die Verwirklichung wichtiger und häufig angefragter Aufgaben bereithält. Xlink beschreibt eine Standardmethode, um Hyperlinks zu XML Dateien hinzuzufügen. XPointer und XFragments sind Syntaxen (in Entwicklung), um auf Teile eines XML Dokuments zu verweisen. Ein XPointer ähnelt ein wenig einem URL, aber anstatt auf Dokumente im Web zu zeigen, zeigt er auf Teildaten innerhalb einer XML Datei. CSS, die Style-Sheet-Sprache, ist auf XML ebenso anwendbar wie auf HTML. XSL ist die weiterentwickelte Sprache zum Erstellen von Style Sheets. Sie basiert auf XSLT, einer Transformationssprache, die für das Umstellen, Hinzufügen und Löschen von Tags und Attributen verwendet wird. Das DOM ist eine Standardmenge von Funktionsaufrufen für die Manipulation von XML (und HTML) Dateien aus einer Programmiersprache. XML Schema 1 und 2 unterstützen Entwickler bei der präzisen Definition ihrer eigenen XML-basierten Formate. Es gibt noch einige weitere verfügbare Module und Werkzeuge, bzw. solche, die sich gerade in der Entwicklung befinden. Sehen Sie sich daher regelmäßig die W3C technical report page an.</para>
</section>

<section>
  <title>6. XML ist neu, aber nicht so neu</title>

  <para>Die Entwicklung von XML begann 1996 und seit Februar 1998 ist es ein W3C-Standard, was Sie vermuten lassen könnte, dass es eine ziemlich unausgegorene Technologie ist. In Wirklichkeit ist die Technologie nicht sehr neu. Vor XML gab es SGML, das in den frühen 80er Jahren entwickelt wurde, seit 1986 eine ISO-Norm ist und eine breite Anwendung für große Dokumentationsprojekte fand. Die Entwicklung von HTML begann dann 1990. Die Entwickler von XML nahmen - aufgrund der Erfahrung mit HTML - einfach die besten Teile von SGML und produzierten etwas, was nicht weniger mächtig als SGML, aber bei weitem geregelter und einfacher in der Anwendung ist. Einige Evolutionen sind allerdings kaum von Revolutionen zu unterscheiden ... Und man muss sagen, dass, während SGML zumeist für technische Dokumentation und viel weniger für andere Arten von Daten verwendet wird, es bei XML genau umgekehrt ist.</para>
</section>

<section>
  <title>7. XML überführt HTML in XHTML</title>

  <para>Es gibt eine wichtige XML Anwendung, die ein Dokumentenformat beschreibt: W3C's XHTML, der Nachfolger von HTML. XHTML hat mit HTML viele gleiche Elemente. Die Syntax hat sich ein wenig geändert, um mit den XML Regeln konform zu sein. Ein Dokument, das "XML basiert" ist, erbt die Syntax von XML, wird aber auf verschiedene Weise begrenzt (z.B. XHTML erlaubt "&lt;p>", aber nicht "&lt;r>"); gleichzeitig wird der Syntax Bedeutung zugemessen (bei XHTML bedeutet "&lt;p>", dass nun ein "Absatz" folgt und nicht, dass eine "Person", ein "Preis" oder sonst irgendetwas ausgezeichnet wird).</para>
</section>

<section>
  <title>8. XML ist modular</title>

  <para>XML erlaubt es einem, ein neues Dokumentenformat zu definieren, indem man andere Formate kombiniert oder wiederbenutzt. Wenn jedoch zwei Formate völlig unabhängig voneinander entwickelt worden sind, können sie Elemente und Attribute enthalten, die in beiden Formaten mit dem gleichen Namen vorkommen. Wenn man diese dann kombinieren will, muss man entsprechend vorsichtig sein (meint "&lt;p&gt;" jetzt "Absatz" aus dem einen Format, oder aber "Person" aus dem anderen Format?). Um bei der Kombination von Formaten Namenskollisionen zu vermeiden, stellt XML den Namensraummechanismus zur Verfügung. XSL und RDF sind zwei gute Beispiele für XML-basierte Formate, die Namensräume benutzen. XML Schema ist entworfen worden, um genau diese Modularisierung bei der Definition von XML Dokumentenstrukturen zu unterstützen. Es ist ein Leichtes, zwei Schemata zu verbinden, um ein drittes herzustellen, welches die Struktur der zusammengefügten Dokumente abbildet.</para>
</section>

<section>
  <title>9. XML ist die Basis für RDF und das Semantic Web</title>

  <para>W3C's Resource Describtion Framework (RDF) ist ein XML Textformat, welches Beschreibungen von Resourcen und Metadatenanwendungen unterstützt, wie z.B. Musik- oder Photokollektionen, oder Schriftenverzeichnisse. Zum Beispiel kann man mit RDF Personen in einem Photoalbum im Web aufgrund von Informationen aus seiner eigenen Kontaktliste identifizieren und ihnen automatisch eine Email senden, um ihnen mitzuteilen, dass ihr Foto im Web zu finden ist. Genau wie HTML Dokumente, Menüsysteme und Webformulare integrierte, um das Web, so wie wir es heute kennen, ins Leben zu rufen, so integriert RDF Anwendungen und Agenten in ein semantisches Web. So wie Menschen eine Vereinbarung über den Sinn der Worte benötigen, damit sie sich unterhalten können, so benötigen Computer Mechanismen für die Vereinbarung von Bedeutungen, sofern sie effektiv miteinander kommunizieren wollen. Eine formale Beschreibung von Ausdrücken in bestimmten Bereichen (z.B. im Handel oder in der Herstellung) wird Ontologie genannt und ist ein notweniger Teil des Semantic Web. RDF, Ontologie und die Repräsentation von Sinnzusammenhängen, so dass Computer die Arbeit von Menschen unterstützen können, sind alles Themen der Semantic Web Activity.</para>
</section>

<section>
  <title>10. XML ist lizenzfrei, plattformunabhängig und gut unterstützt</title>

  <para>Wenn Sie XML als Basis für ein Projekt wählen, dann finden Sie Zugang zu einer großen und wachsenden Ansammlung von Werkzeugen (eines davon macht vielleicht schon das, was Sie brauchen!) und zu einer Menge versierter Fachleute. Sich für XML zu entscheiden, ist fast so wie SQL für Datenbanken zu wählen: Sie müssen nur noch Ihren eigenen Datenbestand und die Programme/Prozeduren, die ihn bearbeiten, erstellen. Aber dafür gibt es viele verfügbare Werkzeuge und viele Leute, die Ihnen helfen können. Und, da XML als eine W3C-Entwicklung lizenzfrei ist, können Sie Ihre eigene Software drum herum bauen, ohne jemandem etwas zu bezahlen. Die große und wachsende Unterstützung bedeutet, dass Sie auch nicht an einen einzigen Anbieter gebunden sind. <emphasis>XML ist nicht immer die beste Lösung, aber es lohnt sich immer, XML in Erwägung zu ziehen.</emphasis></para>
</section>
</chapter>

<appendix>
  <para>Übersetzung: Henning Fischer, W3C Deutsch-Österreichisches Büro
Überarbeitet am 13 Nov. 2001 durch W3C Communication Team (w3t-comm@w3.org)
(last update: $Date: 2005-03-30 10:11:51 $)
Orginal erstellt am 27 Mar 1999 von Bert Bos</para>
</appendix>
</book>
```


Danke


----------



## Franz Degenhardt (28. Mai 2010)

Hallo, 

die Datei, die da nicht gefunden wird, ist die in der xml-Datei verklinkte dtd-Datei. 
Diese kann z.B. verwendet werden um die xml-Datei zu validieren. Ist die dtd-Datei am erwarteten Platz? Ansonsten den link einfach entfernen, parsen sollte man die Datei auch ohne dtd können.


----------



## newbeet (28. Mai 2010)

Ja, Danke, das war's! Hätte man selbst drauf kommen können, aber ich hab mit Xml leider noch nicht so viel Erfahrung! Also, vielen Dank!


----------

