php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.04.2006, 14:58  
Benutzer
 
Registriert seit: 03.06.2003
Beiträge: 89
flyingeagle
Standard php - xml - dom

Hallo,

ich lade mir eine XML-Datei in ein DOM-Objekt, nun moechte ich alle Elemente durchlaufen und ein Attribut auslesen.

Bislang habe ich es so gemacht, dass ich einen DOMPath mit allen Attributen welche ich haben moechte erstellt habe und darueber iteriert bin.

Da ich nun direkt Daten in das DOM schreiben moechte will ich ueber alle Elemente iterierern.

Kann mir jemand sagen wie das geht?
__________________
- Das Leben ist eine Spirale, man kotzt immer in der selben Kurve.
- Frauen behalten nur für sich, was sie nicht wissen.
flyingeagle ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.04.2006, 15:08  
Gast
 
Beiträge: n/a
Standard

WIe sieht denn Dein bisheriges Skript aus?
 
Alt 17.04.2006, 15:23  
Benutzer
 
Registriert seit: 03.06.2003
Beiträge: 89
flyingeagle
Standard

bislang sieht es so aus

Code:
  $oXMLData->Load($sXMLFile);
  $XPATHObject = new DOMXPath($oXMLData);

  $xAllAttrs = $XPATHObject->query("//@myAttr");

  foreach ($xAllAttrs as $xAttr)
  {
    echo $xAttr->nodeValue
  };
so habe ich zwar erreichen koennen, dass alle attribute ausgegeben werden koennen. Ich kann nun aber nicht mehr auf den Elementknoten schliessen, welchem ich nun gerne einen wert zuweisen moechte.
__________________
- Das Leben ist eine Spirale, man kotzt immer in der selben Kurve.
- Frauen behalten nur für sich, was sie nicht wissen.
flyingeagle ist offline  
Alt 17.04.2006, 15:33  
Gast
 
Beiträge: n/a
Standard

Aha, also wirklich die php5 Erweiterung

Na dann hilft die Doku weiter.
http://de.php.net/dom
Zitat:
DOMAttr
[...]
ownerElement DOMElement yes The element which contains the attribute
 
Alt 17.04.2006, 23:25  
Benutzer
 
Registriert seit: 03.06.2003
Beiträge: 89
flyingeagle
Standard

Hallo,

danke fuer die Antwort, habe jetzt eine Loesung fuer mich gefunden

Code:
$oXPATHObject = new DOMXPath($oXMLData);
$oAllElements = $oXPATHObject->query("*");

foreach ($oAllElements as $oElement)
{
  echo $oElement->getAttribute("myAttr");
}
Nun laufe ich ja mit der foreach-Schleife ueber alle Elemente, da ich in einer foreach-Schleife aber ja immer nur auf einer Kopie arbeite muss ich mir das Element welches ich bearbeiten moechte natuerlich neu besorgen.

Wenn ich ein XML in ein DOMDocument lade kann ich es dann einfach veraendern und dann zurueckschreiben oder muss ich ein neues DOMDocument erstellen und alles hineinschreiben.

Meine Idee waehre bislang
Code:
$oXMLData->Load($sXMLFile);
$oElement = $oXMLData->getElementById("testID");

$textElement = $oXMLData->createTextNode("Hallo Welt");
$oElement->appendChild($textElement);

$oXMLData->save("neu.xml");
Leider komme ich so zu keinem Ergebnis.
__________________
- Das Leben ist eine Spirale, man kotzt immer in der selben Kurve.
- Frauen behalten nur für sich, was sie nicht wissen.
flyingeagle ist offline  
Alt 18.04.2006, 00:09  
Gast
 
Beiträge: n/a
Standard

Dazu fällt mir spontan nur mal wieder "HÄ?" ein.
Warum musst Du mit der Schleife über alle Elemente gehen? Was hast Du gegen ownerElement von DOMAttr?
Wenn Du mit foreach über eine DOM Liste läufst, arbeitest Du nicht auf einer Kopie des xml Baums.
 
Alt 18.04.2006, 20:53  
Benutzer
 
Registriert seit: 03.06.2003
Beiträge: 89
flyingeagle
Standard

hi,

leider bin ich da nicht ganz schlau draus geworden, kannst du mir vielleicht ein konkretes beispiel geben?

wie verwende ich dieses ownerElement?
__________________
- Das Leben ist eine Spirale, man kotzt immer in der selben Kurve.
- Frauen behalten nur für sich, was sie nicht wissen.
flyingeagle ist offline  
Alt 18.04.2006, 20:55  
Gast
 
Beiträge: n/a
Standard

$domElement = $xAttr->ownerElement;
 
Alt 18.04.2006, 21:27  
Benutzer
 
Registriert seit: 03.06.2003
Beiträge: 89
flyingeagle
Standard

da sag ich nur hä?

Also ich werde daraus nicht schlau, mit einem DOMAttr kann ich ein neues Attribut erstellen, richtig?

Was habe ich dann davon? Ich moechte doch ein bestehendes XML auslesen.

Irgendwie schein ich aufm Schlauch zu stehen.
__________________
- Das Leben ist eine Spirale, man kotzt immer in der selben Kurve.
- Frauen behalten nur für sich, was sie nicht wissen.
flyingeagle ist offline  
Alt 19.04.2006, 11:23  
Benutzer
 
Registriert seit: 03.06.2003
Beiträge: 89
flyingeagle
Standard

*schieb*

Kann mir denn vielleicht jemand ein Beispielscript zeigen wo mir die Verwendung deutlich wird?
__________________
- Das Leben ist eine Spirale, man kotzt immer in der selben Kurve.
- Frauen behalten nur für sich, was sie nicht wissen.
flyingeagle ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:36 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.