ich viele Tutorials hier in Überlauf sah, aber ich konnte nicht verstehen, was ich vermisst .. Also ich brauche Hilfe ..XML get Attribute
Ich habe eine XML, die es online ist, und ich versuche zu parsen es wie folgt aus:
<products>
<product>
<id>13389</id>
<name><![CDATA[ product name ]]></name>
<category id="14"><![CDATA[ Shoes > test1 ]]></category>
<price>41.30</price>
</products>
Soweit ich die XML lese und es so Parsen:
$reader = new XMLReader();
$reader->open($product_xml_link);
while($reader->read()) {
if($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'product') {
$product = new SimpleXMLElement($reader->readOuterXml());
$pid = $product->id;
$name = $product->name;
$name = strtolower($name);
$link = $product->link;
$price = $product->Price;
...
...
}
} //end while loop
wie Sie sehen können, gibt es eine ID in der Kategorie Tag ist .. Dies ist das ist eine, die ich gerne zu meinem Code greifen und vertreiben würde.
Ich habe so etwas wie dies:
echo "prodcut= " . (string)$product->category->getAttribute('id');
Der Fehler, den ich bekommen habe ist: Call to undefined Methode SimpleXMLElement :: getAttribute()
Ich brauche diese ID, um es zu testen, bevor Einsatz es in DB .. So,
if($id = 600) {
//insert DB
}
Hallo, dank für Ihre Antwort .. Darf ich fragen, ob es einen einfacheren Weg, ohne Arrays ? Mein Code wie ist, ist das möglich, die ID zu greifen? ohne $ document = new DOMDocument(); // und eine zu verwendende Xpath-Instanz $ xpath = neuer DOMXpath ($ document); oder irgendwas? –
Das Array ist nur eine Möglichkeit, die gelesenen Daten zu sammeln.Verwenden Sie Variablen, Call Functions, ... und gut, Sie können meine FluentDOM-Bibliothek verwenden. Es erweitert XMLReader/DOM und abstrahiert etwas davon: https://github.com/FluentDOM/FluentDOM/blob/master/examples/XMLReader/sitemap.php :-) – ThW
Ich behalte meine Lösung so, wie sie ist, mit einigen Änderungen erzählt über: $ document = ... $ xpath =. . . Ich habe die Code-Zeile gelöscht: $ product = new SimpleXMLElement und drehte alle meine Daten zu Array, wie Sie erwähnen .. Jetzt sehe ich, dass das Parsen XML ein wenig langsamer ist ... Das XML hat 5.500 Produkte (die nicht sehr viel sind). Bevor irgendwelche Änderungen, die XML ist ein bisschen schneller glaube ich .. Irgendwelche Vorschläge? –