我看到了很多的教程在这里溢出,但我不明白我错过了什么。所以我需要一些帮助..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相对更快一些。有什么建议吗? –