php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > XML
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


XML Hier passt alles rein, was das Thema XML (XSLT, JSON etc...) betrifft, auch in Verbindung mit PHP

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-06-2005, 14:34
TomTom101
 Newbie
Links : Onlinestatus : TomTom101 ist offline
Registriert seit: Jun 2005
Beiträge: 3
TomTom101 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Neues (DOM-)XML Dokument nach XPath

Hi,

ich habe ein XML-File als Basis, dem durch eine XPath-Query relevante nodes herausgelesen werden sollen, aus denen ein neues XML-File generiert werden soll.

Konkret sieht das so aus, dass das XML-File Reservierungsdaten eines ganzen Monats enthält, die XPath die Reservierungen eines Tages herausholt und dann ein XML-File mit nur diesen Daten erstellt werden soll.

XPath::xpath_eval() liefert nur dummerweise einen Array aus DOM-Elementen (keine nodes), mit denen man egtl. gar nichts anfangen kann, da man das DOM-Element nicht dumpen, sondern gerade eben dessen Attribute auslesen kann.

Seht Ihr noch eine Möglichkeit, ausser der, das komplette XML-File durchzuforsten und nicht passende Nodes zu entfernen?

Danke!
Thomas
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 15-06-2005, 16:41
Benutzerbild von Nezzar Nezzar
 wannabe batard
Links : Onlinestatus : Nezzar ist offline
Registriert seit: Mar 2002
Beiträge: 477
Nezzar ist zur Zeit noch ein unbeschriebenes Blatt
Nezzar eine Nachricht über ICQ schicken
Standard

DOMElements sind nodes (falls du mit node die Klasse DOMNode meinst), soll heißen sie sind davon abgeleitet. Und es ist möglich diese zu "dumpen" (was ich jetzt mal als ausgegeben des XML-Strings dieser Knoten interpretieren würde):
PHP-Code:
$Nodes $x->query('foo/bar[@baz = "buz"]')
for(
$i 0$i $Nodes->length$i++)
{
  
$Node $Nodes->item($i);
  echo 
$Node->ownerDocument->saveXML($Node);

Siehe auch http://de2.php.net/manual/en/functio...nt-savexml.php
und DOMNodeList unter www.php.net/dom
__________________
"Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

Geändert von Nezzar (15-06-2005 um 17:01 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 16-06-2005, 15:17
TomTom101
 Newbie
Links : Onlinestatus : TomTom101 ist offline
Registriert seit: Jun 2005
Beiträge: 3
TomTom101 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi Nezzar,

danke für die Info - der Haken bei der Sache ist leider, dass ich mich mit PHP4 begnügen muss
Mit Zitat antworten
  #4 (permalink)  
Alt 16-06-2005, 19:29
Benutzerbild von Nezzar Nezzar
 wannabe batard
Links : Onlinestatus : Nezzar ist offline
Registriert seit: Mar 2002
Beiträge: 477
Nezzar ist zur Zeit noch ein unbeschriebenes Blatt
Nezzar eine Nachricht über ICQ schicken
Standard

D'oh.
Hab ich komplett übersehen. Dennoch: Das oben beschriebene ist alltägliche Arbeit (sich durch 'ne DOMNodeList hangeln). Ich bin mir sicher, dass das auch mit der DOMXML-Extension von PHP4 zu bewerkstelligen ist.
Zum Thema "dumpen" fällt mir dann schon nichts mehr ein (es scheint in DOMXML von PHP4 nicht möglich zu sein einzelne Knoten zu dumpen, korrigiert mich wenn ich falsch liege), außer das hier (was eigentlich ziemlich pfuschig ist):
  • Die DOMNodeList per XPath besorgen
  • DocumentFragment erzeugen(DOMDocument::create_document_fragment)
  • neues DOMDocument erzeugen
  • Root-Knoten im neuen DOMDocument erzeugen
  • DocumentFragment unter dem Root-Knoten einfügen
  • Neues DOMDocument dumpen

Wie gesagt: das scheint mir nicht die beste Lösung zu sein, aber scheinbar die einzig mögliche.

Edit: PHP4's DOMXML
__________________
"Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

Geändert von Nezzar (16-06-2005 um 19:31 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 17-06-2005, 11:38
TomTom101
 Newbie
Links : Onlinestatus : TomTom101 ist offline
Registriert seit: Jun 2005
Beiträge: 3
TomTom101 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

create_document_fragment ist ja schon wieder PHP5

macht aber nix. Meine Lösung ist so schlimm nun auch wieder nicht:
PHP-Code:
$nodes $this->dom->get_elements_by_tagname("reservation");
$schedule $this->schedule->dom->document_element();

        foreach (
$nodes as $reservation) {
            if (
$reservation->get_attribute('date') != $date) {                
                
$schedule->remove_child($reservation);
            }
        } 
damit kann ich eigentlich gut leben. Ich hätte eine XPath Lösung vorgezogen, weil sie leichter anzupassen gewesen wäre. Passt aber trotzdem!

Grüße und danke!
Thomas
Mit Zitat antworten
  #6 (permalink)  
Alt 17-06-2005, 18:15
Benutzerbild von Nezzar Nezzar
 wannabe batard
Links : Onlinestatus : Nezzar ist offline
Registriert seit: Mar 2002
Beiträge: 477
Nezzar ist zur Zeit noch ein unbeschriebenes Blatt
Nezzar eine Nachricht über ICQ schicken
Standard

Verdammt, bin fest davon ausgegangen, dass es das auch in PHP4 geben würde, da ich die Konstante XML_DOCUMENT_FRAG_NODE in der Doku gesehen hab (also hab ich den Methoden-Namen einfach mal geraten ).
__________________
"Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:31 Uhr.