XML: Atom Feed

Adrian der Grosse

Aktives Mitglied
Hallo zusammen,
Ich habe diverse Atom-Feeds. Wenn ich diese mit PHP - SimpleXML einlese gibt es Probleme.

Wenn ich nun den Beispiel Feed von http://www.atompub.org/rfc4287.html#rfc.section.1.1 nehme:
CODE <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

<title>Example Feed</title>
<link href="http://example.org/"/>
<updated>2003-12-13T18:30:02Z</updated>

<author>
<name>John Doe</name>
</author>
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>

<entry>

<title>Atom-Powered Robots Run Amok</title>
<link href="http://example.org/2003/12/13/atom03"/>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
<updated>2003-12-13T18:30:02Z</updated>

<summary>Some text.</summary>
</entry>

</feed>

Jetzt möchte ich gerne Checken um es sich um einen ATOM-Feed handelt:

CODE $xml = simplexml_load_file('j:/atom.xml');

$atom = $xml->xpath('/feed');

if ($atom != false) {
// Feed ist ein ATOM-Feed
echo 'ATOM';
}


hier wird es nicht erkannt.

Wenn ich aber nun "<feed xmlns="http://www.w3.org/2005/Atom">"

"<feed xmlns:content="http://purl.org/atom/ns"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="en">" wird es nun erkannt!

Heisst das, dass das ganze ATOM-Format einen Fehler hat(Was ich kaum glauben kann), oder wo stehe ich da auf dem Schlauch? Hat jemand eine Möglichkeit wie ich einen ATOM-Feed mit SimpleXML lesen und erkennen kann(ohne das <feed....> zu ändern)? (mit RSS funktioniert es ohne Probleme)

Besten Dank
 
Möglichkeit 1: Deklaration eines Standard-Namespace

QUOTE (HoBbY @ Mi 19.4.2006, 23:51)
<feed xmlns="http://www.w3.org/2005/Atom">


Möglichkeit 2: Kein Standardnamespace deklariert


QUOTE (HoBbY @ Mi 19.4.2006, 23:51)<feed xmlns:content="http://purl.org/atom/ns"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="en">


Möglichkeit 3: Eigenes Namespace-Prefix deklarieren und verwenden:


QUOTE <myphantasie:feed
xmlns:myphantasie="http://www.w3.org/2005/Atom"
xmlns:content="http://purl.org/atom/ns"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="en">


Letzteres ist ein völlig korrektes Xml-Dokument + Atom, das ebenso so angeboten werden könnte.

Sprich: Eigentlich ist die zweite Version 'höchst schlampig und ungenau'.

Folglich: Erarbeite dir das Konzept des Namespace zu Xml und sieh dir dann an, wie das in dem SimpleXml verwendet wird. Letzteres nutze ich nicht, bei NET sind es eben ein paar zu deklarierende Objekte. Jeder ist berechtigt, sein Atom mit eigenem Namespace-Prefix anzubieten.
 
Hallo,

Besten Dank für deine Antwort!

Kennst du ein gutes Buch (oder auch Onlinetutorial) (Einführung in XML), dass diese Thematik bearbeitet (ausser deiner Seite
biggrin.gif
)?

Wie würdest du den in .NET auf feed zugreifen (xpath/SingleNode)?

Besten Dank

PS: könnte bitte jemand mir das PM-System freischalten?
 
QUOTE (HoBbY @ Do 20.4.2006, 13:14)Wie würdest du den in .NET auf feed zugreifen (xpath/SingleNode)?

Die NET-SelectSingleNode-Methode ist überladen, da kann ein Namespacemanager übergeben werden, der die Namespacedeklarationen enthält.


QUOTE Kennst du ein gutes Buch (oder auch Onlinetutorial) (Einführung in XML), dass diese Thematik bearbeitet (ausser deiner Seite)?


Nö.
 
Zurück
Oben