Mailinglisten-Archive |
hi listies.. lange ist's her, mein letztes schreiben ;) nun gut.. im moment entwickle ich ein tool mit php5 (hab apache 2.? mit php5.0.1) und benutze die dom extension zum xml files bearbeiten (dom erschien mir doch wesentlich komfortabler als simplexml, da ich erweiterte funktionen benötige) nun suche ich eine möglichkeit, von einem gegebenen domelement ALLE bestehenden attribute zu fetchen..nur finde ich da irgendwie keine gure möglichkeit, wer weiss da rat? listies haben gern code... mein xml-file (nur als beispiel; nicht das ganze): (sachen in [..] sind platzhalter, nicht wirklich im xml) ----------------- <?xml version="1.0"?> [DOCTYPE] <xdb> <xImport> <xHash>b6b8b34a459d7eb812d21d31ae8e8849</xHash> <xPropId>3</xPropId> <xGenerated>1096281554</xGenerated> </xImport> <xProperties> <xProperty parent="0" id="3">Adresse</xProperty> <xProperty parent="3" id="9">Adr. Art</xProperty> <xProperty parent="3" id="10">Adr. Priorität</xProperty> <xProperty parent="3" id="11">Adresszeile1</xProperty> <xProperty parent="3" id="12">Adresszeile2</xProperty> <xProperty parent="3" id="13">PLZ</xProperty> <xProperty parent="3" id="14">Ort</xProperty> <xProperty parent="3" id="15">Land</xProperty> </xProperties> </xdb> ok, nun bin ich am schreiben einer kleinen dom-wrapper-klasse und hätte dort gerne eine funktion get_attributes($tagname), welche mir von allen tags $tagname ALLE attribute in einem array zurückgibt.. folgende klasse hab ich bis jetzt (auch hier, überflüssiges is draussen) --------- class xdbXMLParser { var $xml; // xml object function xdbXMLParser($filename) { $this->xml = DOMDocument::load($filename); $this->filename = $filename; if ($this->xml) { $val = $this->xml->validate(); if(!$val) die("Could not validate XML file!"); } else { die("Error loading XML file"); } $this->get_elements_by_tagname("xProperty"); die; } function get_elements_by_tagname($tagname) { $el = $this->xml->getElementsByTagName($tagname); if(count($el)<1) { return false; }else{ foreach($el as $val) { $text = $this->str_normalize($val->firstChild->nodeValue); $atts = $val->Child_Nodes->nodeValue; var_dump($atts); } } } function get_attributes($val) { $tmp = array(); foreach($val->attributes() as $key=>$val) $tmp[$key] = $val; return $tmp; } } --------------- tja, so sieht meine klasse bisher aus - get_elements_by_tagname() funktioniert wunderprächtig.. aber eben get_attributes() überhaupt nicht! anscheinend haben die DOMElement-objekte keine attributes()-methode - steht dort nur drin, weil ich es irgendwo gelesen hab als test... ;-) also, kann mir einer sagen, wie ich per dom alle attribute eines DOMElements bekommen kann? bei allen dom-funktionen, die mit attributen arbeiten, muss man immer ein attributname mitgeben - darum kann ich (soweit ich eben weiss) davon keine verwenden.. wer kann mir helfen? ;-) gruss dario nuevo
php::bar PHP Wiki - Listenarchive