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