XML Datei parsen
Jens P.
- php
0 Ingo Turski0 David Aurelio0 Shenga
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"><?xml version="1.0" ?><br>
<DRAFTADMINISTRATION COMPANY="KEIPER" DATE="27.02.2006 10:51:02" AUTHOR="J. Raidl"><br>
<ROWCOUNT>17</ROWCOUNT><br>
<ROW ID="1"><br>
<SDESC>Leer Excel</SDESC><br>
<FORMAT>Excel</FORMAT><br>
<LANG>de</LANG><br>
<COUNTRY></COUNTRY><br>
<LOCATION>08</LOCATION><br>
<DEPARTMENT></DEPARTMENT><br>
<LINK><a href="http://tzdev1/DMS/Templates.nsf/viewLookupAllTemplates/7BF78BE16FCCBE06C125701800495CBC/$file/leer.xlt">http://tzdev1/DMS/Templates.nsf/viewLookupAllTemplates/7BF78BE16FCCBE06C125701800495CBC/$file/leer.xlt</a></LINK><br>
<DESC>leere Excel Vorlage</DESC><br>
<STANDARD>1</STANDARD><br>
</ROW><br>
</DRAFTADMINISTRATION></font></td></tr>
</table>
<div align="center">
<table cellspacing="2" cellpadding="2">
<tr valign="top"><td><a href="/DMS/Templates.nsf/viewXMLContentDE?OpenView&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&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&ExpandView" target="_self"><img src="/icons/expview.gif" border="0" align="top" alt="">Expand</a></td><td><a href="/DMS/Templates.nsf/viewXMLContentDE?OpenView&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>
Hi,
Wie kann ich den XML Teil am besten extrahieren?!
Da ist kein gültiges XML enthalten, selbst wenn Du
Erst alle < 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
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 '<?xml version="1.0" ?>');
$ende = strpos ($dokument '</DRAFTADMINISTRATION>') + 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.
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