Frage

Die ursprüngliche Frage ist unten, aber ich den Titel geändert, weil ich denke, es einfacher sein wird, andere zu finden, mit dem gleichen Zweifel. Am Ende ist ein XHTML-Dokument ein XML-Dokument.

Es ist ein Anfänger Frage, aber ich würde gerne wissen, was denken Sie, die beste Bibliothek ist XHTML-Dokumente in PHP5 für das Parsen?

Ich habe die XHTML von HTML-Dateien (die in dem mit Word erstellt: S) mit Tidy, und weiß, dass ich einige Elemente von ihnen zu ersetzen (wie das und das Element, ersetzen einige Attribute in

Tags).

Ich habe nicht XML sehr viel verwendet wird, scheint es viele Möglichkeiten zu sein für das Parsen in PHP (Simple XML, DOM, etc.), und ich weiß nicht, ob alle von ihnen tun können, was ich brauche, eine davon ist die einfachste zu verwenden.

Sorry für mein Englisch, ich bin Form Argentinien. Dank!

biss ich weitere Informationen: Ich habe eine Menge von HTML-Seiten haben, getan in Word 97 I für die Reinigung Tidy verwendet und sie in XHTML Strict drehen, so dass nun alle XML-kompatibel sind. Ich möchte einen XML-Parser verwenden, um einige Elemente zu finden und ersetzen Sie sie (die Logik, durch die ich diese keine Rolle spielt). Zum Beispiel möchte ich alle Seiten das gleiche CSS-Stylesheet und Klassenattribut verwenden, einheitliches Erscheinungsbild. Sie sind alle statischen Seiten, die juristische Dokumente enthält, gibt es nichts seltsam. Welche der Erweiterungen soll ich verwenden? Ist SimpleXML genug? Sollte ich lernen DOM trotz schwieriger zu sein?

War es hilfreich?

Lösung

Nur die Verwirrung hier zu klären. PHP hat eine Reihe von XML-Bibliotheken, weil php4 nicht sehr gute Möglichkeiten hat in dieser Richtung. Von PHP5, haben Sie die Wahl zwischen SimpleXML , DOM und die sax-basierte expat-Parser . Letztere bestand auch in PHP4. php4 hatte auch eine DOM-Erweiterung, die nicht die gleiche wie php5 ist.

DOM und SimpleXML sind Alternativen zu dem gleichen Problem Domäne; Sie læoad das Dokument in den Speicher und lassen Sie es als Baumstruktur zugreifen. DOM ist ein ziemlich sperrig api, aber es ist auch sehr konstant und es ist in vielen Sprachen implementiert, was bedeutet, dass Sie Ihr Wissen über Sprachen wiederverwenden (In Javascript zum Beispiel). SimpleXML kann einfacher zunächst sein.

Der SAX-Parser ist ein anderes Tier. Es behandelt ein XML-Dokument als einen Strom von Tags. Dies ist nützlich, wenn Sie mit sehr großen Dokumenten zu tun hat, da Sie alles im Speicher nicht halten müssen.

Für Ihre Nutzung, ich würde wahrscheinlich das DOM api verwenden.

Andere Tipps

könnten Sie SimpleXML , die in einem Standard-PHP enthalten ist zu installieren. Diese Erweiterungen bieten einfachen objektorientierten Zugriff auf XML-Strukturen.

Es gibt auch DOM XML . Ein „Nachteil“ zu dieser Erweiterung ist, dass es ein bisschen schwieriger zu bedienen ist und dass es nicht standardmäßig enthalten ist.

  • DOM ist ein Standard, sprachunabhängige API für hierarchische Daten wie XML, die vom W3C standardisiert wurde. Es ist eine reiche API mit viel Funktionalität. Es ist Aufgabe zugrunde, dass jeder Knoten ein Objekt ist.

    DOM ist gut, wenn man nicht nur lesen will, oder schreiben, aber Sie wollen eine Menge Manipulation von Knoten ein vorhandenes Dokument, wie das Einfügen Knoten zwischen anderen tun, um die Struktur zu ändern, etc.

  • SimpleXML ist ein PHP-spezifische API, die ebenfalls objektbasierte, aber bestimmt viel weniger "kurz und knapp als die DOM zu sein: einfache Aufgaben wie das Finden der Wert von a Knoten oder die Suche nach ihren untergeordneten Elementen nehmen viel weniger Code. Seine API ist nicht so reich als DOM, aber es enthält noch Features wie XPath-Abfragen und eine grundlegende Fähigkeit, mit mehrere Namespace-Dokumenten zu arbeiten. Und, besonders wichtig, es bewahrt noch alle Funktionen Ihres Dokuments wie XML CDATA-Abschnitte und Kommentare, auch wenn es nicht funktioniert nicht enthalten, sie zu manipulieren.

    SimpleXML ist sehr gut für read-only: Wenn alles, was Sie tun mögen, das XML-Dokument gelesen wird, und wandelt es in einer anderen Form, es Ihnen eine Menge Code dann sparen. Es ist auch ziemlich gut, wenn Sie ein Dokument erstellen möchten, oder tun grundlegende Manipulationen, wie das Hinzufügen oder untergeordnete Elemente oder Attribute zu ändern, aber es kann kompliziert werden (aber nicht unmöglich) viel Manipulation vorhandener Dokumente zu tun. Es ist nicht einfach, zum Beispiel ein untergeordnetes Element zwischen zwei anderen hinzuzufügen; addChild Einsätze nur nach anderen Elementen. SimpleXML kann auch nicht von XSLT-Transformationen tun. Es muss nicht Dinge wie ‚getElementsByTagName‘ oder getElementByld‘, aber wenn Sie XPath wissen können Sie immer noch so etwas mit SimpleXML tun.

    Das SimpleXMLElement Objekt ist etwas ‚magisches‘. Die Eigenschaften, die es macht, wenn Sie var_dump / printr / var_export entsprechen nicht seine vollständige interne Darstellung. Es macht einen Teil seiner untergeordneten Elemente, als ob sie Eigenschaften waren, die mit dem zugegriffen werden kann -> Operator, aber immer noch bewahrt das vollständige Dokument intern, und Sie können ein reserviertes Wort Dinge wie den Zugang zu tun ist ein untergeordnetes Element, dessen Name mit dem [] Bediener, als ob es eine assoziative Array.

Sie haben nicht in vollem Umfang auf die eine oder andere zu begehen, weil PHP die Funktionen implementiert:

  • simplexml_import_dom (DOMNode)
  • dom_import_simplexml (SimpleXMLElement)

Dies ist hilfreich, wenn Sie SimpleXML verwenden und müssen mit dem Code arbeiten, die einen DOM-Knoten erwartet oder umgekehrt.

PHP bietet auch eine dritte XML-Bibliothek:

  • XML Parser (eine Implementierung von SAX , eine sprachunabhängige Schnittstelle, aber nicht mit diesem Namen im Handbuch genannt) ist ein viel niedrigeres Niveau Bibliothek, die einen ganz anderen Zweck dient. Es baut keine Objekte für Sie. Es im Grunde nur macht es einfacher, eine eigene XML-Parser zu schreiben, weil es die Arbeit des Vorrückens auf das nächste Token der Fall ist, und die Art der Token, herauszufinden, wie das Tag-Name ist und ob es sich um ein Öffnen oder Schließen-Tag, für Sie . Dann müssen Sie Rückrufe schreiben, die jedes Mal, wenn ein Token angetroffen ausgeführt werden soll. Alle Aufgaben wie repräsentiert das Dokument als Objekte / Arrays in einem Baum, um das Dokument zu manipulieren, usw. müssen separat durchgeführt werden, weil alles, was Sie mit dem XML-Parser tun können, sind ein niedriges Niveau Parser schreiben.

    Die XML-Parser-Funktionen sind nach wie vor sehr hilfreich, wenn Sie bestimmte Speicher oder Geschwindigkeitsanforderungen haben. Mit ihm ist es möglich, einen Parser zu schreiben, die auf einmal ein sehr langes XML-Dokument ohne die gesamten Inhalt im Speicher hält analysieren können. Auch, wenn Sie in allen Daten nicht interessiert, und nicht brauchen oder wollen es in einen Baum oder eine Reihe von PHP-Objekten gesetzt wird, dann kann es schneller sein. Zum Beispiel, wenn Sie durch ein XHTML-Dokument scannen und alle Links zu finden, und Sie kümmern sich nicht um Struktur.

Ich ziehe SimpleXMLElement da es ziemlich einfach ist, verwenden, um lop durch Elemente.

Edit: Es sagt keine Version Info avaliable aber es ist avaliable in PHP5, zumindest 5.2.5 aber wahrscheinlich früher

. obwohl

Es ist wirklich persönliche Wahl, es gibt viele XML-Erweiterungen .

Beachten Sie viele XML-Parser wird sträuben, wenn Sie ungültige Markup haben - XHTML XML sein sollte, aber nicht immer

!

Es ist schon eine lange Zeit (2 Jahre oder mehr), da ich mit XML-Analyse in PHP gearbeitet, aber ich hatte immer gut, brauchbare Ergebnisse aus dem XML_Parser Pear Paket . Having said that, ich habe eine minimale Belastung auf PHP5 hatte, so dass ich nicht wirklich wissen, ob es besser ist, in diesen Tagen eingebauten Alternativen.

Ich habe ein wenig von XML-Analyse in PHP5 im vergangenen Jahr und beschlossen, eine Kombination von SimpleXML zu verwenden.

DOM ist ein bisschen mehr nützlich, wenn Sie eine neue XML-Struktur oder auf einen bestehenden ein, seine etwas flexibler erstellen mögen.

Es hängt wirklich davon ab, was Sie erreichen wollen. Zum Ziehen ziemlich große Datenmengen, das heißt viele Aufzeichnungen sagen, Produktinformationen aus einem Geschäft Website, würde ich wahrscheinlich Expat verwenden, da seine angeblich ein bisschen schneller ... Ich persönlich habe hat XML ist groß genug, um einen spürbaren Leistungsschub zu erzeugen. Bei diesen Mengen könnten Sie auch sein SQL.

Ich empfehle SimpleXML verwenden. Es ist ziemlich intuitiv, einfach zu bedienen / schreiben. Außerdem arbeitet gut mit XPath.

Habe nie wirklich DOM verwenden viel, aber wenn Sie den XML-Parser für etwas so groß verwenden, wie Sie beschreiben, Sie könnten es nutzen wollen, da es ein wenig mehr funktional als SimpleXML.

Sie können über alle drei an W3C Schulen lesen:

http://www.w3schools.com/php/php_xml_parser_expat.asp

http://www.w3schools.com/php/php_xml_simplexml.asp

http://www.w3schools.com/php/php_xml_dom.asp

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top