我看到了很多的教程在這裏溢出,但我不明白我錯過了什麼。所以我需要一些幫助..XML獲取屬性
我有一個XML,它是在網上,我想解析這樣的:
<products>
<product>
<id>13389</id>
<name><![CDATA[ product name ]]></name>
<category id="14"><![CDATA[ Shoes > test1 ]]></category>
<price>41.30</price>
</products>
據,我讀XML和解析它像這樣:
$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
正如你所看到的,有類別標籤的ID。這是我想抓住並接受我的代碼..
我做了這樣的事情:
echo "prodcut= " . (string)$product->category->getAttribute('id');
我得到的錯誤是: 調用未定義的方法的SimpleXMLElement ::的getAttribute()
我需要這個ID,以便插入之前對其進行測試它在DB ..因此,
if($id = 600) {
//insert DB
}
您好, 謝謝您的回答..請問是否有任何更簡單的方法,沒有任何陣列? 我的代碼是這樣的,是否有可能獲得該ID?沒有 $ document = new DOMDocument(); //使用xpath實例 $ xpath = new DOMXpath($ document);或什麼? –
該數組只是一種收集讀取數據的方法。使用變量,調用函數,...以及,您可以使用我的FluentDOM庫。它擴展了XMLReader/DOM並摘錄了一些內容:https://github.com/FluentDOM/FluentDOM/blob/master/examples/XMLReader/sitemap.php :-) – ThW
我保持我的解決方案的狀態,並對其進行了一些更改告訴關於: $ document = ... $ xpath =。 。 。我刪除了代碼行: 我刪除了代碼行: $ product = new SimpleXMLElement($ reader-> readOuterXml()); 並將您的所有數據都轉換爲數組。 現在,我看到解析XML有點慢...... XML有5.500個產品(不是很多)。 在進行任何更改之前,XML相對更快一些。有什麼建議嗎? –