Jens P.: XML Datei parsen

Habe folgendes HTML Dokument...
Wie kann ich den XML Teil am besten extrahieren?!
Erst alle < ersetzen damit ich die tags krieg!?!? oder wie?!?
Kann mir jemand Tipps geben wie ich da am besten rangehe?!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>XML</title>
</head>
<body text="#000000" bgcolor="#FFFFFF">

<table border="0" cellpadding="2" cellspacing="0">

<tr>
<th nowrap align="left"><b><font size="2" face="Arial">server</font></b></th>

<th nowrap align="left"><b><font size="2" face="Arial">thema</font></b></th>

<th nowrap align="left"><b><font size="2" face="Arial">datum</font></b></th>

<th nowrap align="left"><b><font size="2" face="Arial">inhalt</font></b></th>
</tr>

<tr valign="top"><td><img src="/icons/ecblank.gif" border="0" height="1" width="16" alt=""><font size="2" face="Arial"><a href="/DMS/Templates.nsf/475538ec1fe6eea1c1256f1c003412cc/fca709bca926d041c125712200368cc6?OpenDocument">tzdev1</a></font></td><td><font size="2" face="Arial">XMLContent tzdev1</font></td><td><font size="2" face="Arial">27.02.2006 10:51:02</font></td><td><font size="2" face="Arial">&lt;?xml version=&quot;1.0&quot; ?&gt;<br>

&lt;DRAFTADMINISTRATION COMPANY=&quot;KEIPER&quot; DATE=&quot;27.02.2006 10:51:02&quot; AUTHOR=&quot;J. Raidl&quot;&gt;<br>
&lt;ROWCOUNT&gt;17&lt;/ROWCOUNT&gt;<br>
  &lt;ROW ID=&quot;1&quot;&gt;<br>

&lt;SDESC&gt;Leer Excel&lt;/SDESC&gt;<br>
    &lt;FORMAT&gt;Excel&lt;/FORMAT&gt;<br>
    &lt;LANG&gt;de&lt;/LANG&gt;<br>
    &lt;COUNTRY&gt;&lt;/COUNTRY&gt;<br>

&lt;LOCATION&gt;08&lt;/LOCATION&gt;<br>
    &lt;DEPARTMENT&gt;&lt;/DEPARTMENT&gt;<br>
    &lt;LINK&gt;<a href="http://tzdev1/DMS/Templates.nsf/viewLookupAllTemplates/7BF78BE16FCCBE06C125701800495CBC/$file/leer.xlt">http://tzdev1/DMS/Templates.nsf/viewLookupAllTemplates/7BF78BE16FCCBE06C125701800495CBC/$file/leer.xlt</a>&lt;/LINK&gt;<br>
    &lt;DESC&gt;leere Excel Vorlage&lt;/DESC&gt;<br>

&lt;STANDARD&gt;1&lt;/STANDARD&gt;<br>
  &lt;/ROW&gt;<br>
&lt;/DRAFTADMINISTRATION&gt;</font></td></tr>
</table>
<div align="center">
<table cellspacing="2" cellpadding="2">
<tr valign="top"><td><a href="/DMS/Templates.nsf/viewXMLContentDE?OpenView&amp;Start=1" target="_self"><img src="/icons/prevview.gif" border="0" align="top" alt="">Previous</a></td><td><a href="/DMS/Templates.nsf/viewXMLContentDE?OpenView&amp;Start=1" target="_self"><img src="/icons/nextview.gif" border="0" align="top" alt="">Next</a></td><td><a href="/DMS/Templates.nsf/viewXMLContentDE?OpenView&amp;ExpandView" target="_self"><img src="/icons/expview.gif" border="0" align="top" alt="">Expand</a></td><td><a href="/DMS/Templates.nsf/viewXMLContentDE?OpenView&amp;CollapseView" target="_self"><img src="/icons/colview.gif" border="0" align="top" alt="">Collapse</a></td><td><a href="/DMS/Templates.nsf/475538ec1fe6eea1c1256f1c003412cc/$searchForm?SearchView" target="_self"><img src="/icons/schview.gif" border="0" align="top" alt="">Search</a></td></tr>
</table>
</div></body>
</html>

  1. Hi,

    Wie kann ich den XML Teil am besten extrahieren?!

    Da ist kein gültiges XML enthalten, selbst wenn Du

    Erst alle &lt; ersetzen

    wirst, bleiben immer noch sinnlose und nicht geschlossene <br> (und großgeschriebene Tags und Attribute).

    Extrahiere die Strings einfach anhand der gegebenen Entities und nehme nur das, as dazwischen steht.

    freundliche Grüße
    Ingo

  2. Du musst erstmal den "XML"-Teil extrahieren, bevor Du das weiterverarbeiten kannst.
    Folgendes setzt voraus, dass das HTML-Dokument ISO-8859-1 als Zeichensatz verwendet. Ansonsten musst Du z.B. die Multibyte-Stringfunktionen von PHP verwenden. Außerdem ist "file_get_contents()" erst ab PHP 4.3.0 verfügbar.

      
    $dokument = file_get_contents ('pfad/zum/html/dokument');  
    $start = strpos ($dokument '&lt;?xml version=&quot;1.0&quot; ?&gt;');  
    $ende = strpos ($dokument '&lt;/DRAFTADMINISTRATION&gt') + 27;  
    $xml_teil = substr ($dokument, $start, $ende - $start);  
    
    

    Ab dieser Stelle musst Du nur noch die <br>-Elemente  entfernen oder in Zeilenumbrüche umwandeln ("\n"), spontan würde ich da reguläre Ausdrücke verwenden, und dann die HTML-entities in die entsprechenden Zeichen umwandeln (z.B. mit html_entity_decode. Dann hast Du (fast) XML.
    Das kannst Du dann mit dem XML-Parser Deiner Wahl weiterverarbeiten, wsa sich da anbietet, hängt mit der Dir zur Verfügung stehenden PHP-Version ab, da gibt es verschiedene native Lösungen (DOM XML, SimpleXML, XML Parser Funktionen, XML Reader) sowie darauf Aufbauende Packages wie minixml oder PEAR::Config.

  3. Habe folgendes HTML Dokument...
    Wie kann ich den XML Teil am besten extrahieren?!

    <?xml version="1.0" ?>
    <DRAFTADMINISTRATION COMPANY="KEIPER" DATE="27.02.2006 10:51:02" AUTHOR="J. Raidl">
    <ROWCOUNT>17</ROWCOUNT>
    <ROW ID="1">
    <SDESC>Leer Excel</SDESC>
    <FORMAT>Excel</FORMAT>
    <LANG>de</LANG>
    <COUNTRY></COUNTRY>
    <LOCATION>08</LOCATION>
    <DEPARTMENT></DEPARTMENT>
    <LINK>http://tzdev1/DMS/Templates.nsf/viewLookupAllTemplates/7BF78BE16FCCBE06C125701800495CBC/$file/leer.xlt</LINK>
    <DESC>leere Excel Vorlage</DESC>
    <STANDARD>1</STANDARD>
    </ROW>
    </DRAFTADMINISTRATION>

    Du meinst, so sollte das dann aussehen?

    Gruss
    Shenga