2010-01-20 16 views
5

Abend Jungs.PHP Namespace Simplexml Probleme

Erstens zu sagen, ich habe How do I parse XML containing custom namespaces using SimpleXML? gelesen.

Ich Parsing ein XML-Dokument aus einer Quelle nicht egal, und sie verwenden einen benutzerdefinierten Namespace.

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0" xmlns:moshtix="http://www.moshtix.com.au"> 
    <channel> 
    <item> 
    <link>qweqwe</link> 
    <moshtix:genre>asdasd</moshtix:genre> 
... 

Zum Beispiel. Wenn ich mit SimpleXML parse, ist keines der mestix: Namespace-Elemente sichtbar oder zugänglich. Wahrscheinlich eine wirklich einfache Lösung, aber irgendwelche Ideen Jungs?

Antwort

6

Normalerweise verwenden Menschen children().

$rss = simplexml_load_string(
    '<?xml version="1.0" encoding="utf-8"?> 
    <rss version="2.0" xmlns:moshtix="http://www.moshtix.com.au"> 
     <channel> 
      <link>qweqwe</link> 
      <moshtix:genre>asdasd</moshtix:genre> 
     </channel> 
    </rss>' 
); 

foreach ($rss->channel as $channel) 
{ 
    echo 'link: ', $channel->link, "\n"; 
    echo 'genre: ', $channel->children('moshtix', true)->genre, "\n"; 
} 
+0

Während das funktioniert für Extrakt jeden Element, das nützlich ist, eine ganze Menge der Zeit, die ich brauche eine json_encode ausführen und einfach jeden einzelnen gültigen Artikel bündelt und speichern sie in einer Datenbank. Aber wenn ich das tue, erkennt es die benutzerdefinierten Namespace-Elemente nicht. Irgendwelche Ideen? Die Daten in jedem sind zu unterschiedlich, um sie manuell einzugeben. – James

+0

Verwaltet, um es mit ein paar foreach-Scans durch jedes Element zu beheben;) – James

+1

Es schunkelt mich immer leicht, wenn Leute sagen, dass sie XML in JSON konvertieren, ohne sich um die Struktur kümmern zu wollen. Warum nicht als XML speichern? – IMSoP