可以在以下URL上看到该文件:#
上面的XML文件由两个元素组成,我希望按顺序显示这两个元素,即“产品”和“商品”。
我使用SimpleXML加载XML Feed。
$ text = simplexml_load_file('feed.xml');
我也使用foreach来显示文件中的数据
foreach ($text->categories->category->items->product as $product) {}
如何使用for each语句或任何其他方法从XML文件中显示“product”和“offer”?
答案 0 :(得分:1)
虽然我还没有真正得到你想要获得的东西,但我会发布一些如何通过xPath处理这个XML的例子。
首先选择所有product
和offer
个节点:
$xml = simplexml_load_file('feed.xml');
// Make sure to register custom namespace
$xml->registerXPathNamespace('ns', 'urn:types.partner.api.url.com');
$products = $xml->xpath('//ns:product');
$offers = $xml->xpath('//ns:offer');
echo count($products); // Number of all product nodes
echo count($offers); // Number of offer nodes
基本迭代:
foreach ($products as $product) {
//echo '<pre>'; print_r($product); echo '</pre>';
echo '<pre>'; echo $product->name . ', ' . $product->minPrice; echo '</pre>';
}
答案 1 :(得分:1)
<items>
仅包含<product>
和<offer>
元素吗?如果是这样的话:
foreach ($text->categories->category->items->children() as $product_or_offer) {
// Do something
}
请参阅http://php.net/simplexmlelement.children
如果您想明确获取产品/商品元素,可以使用简单的XPath表达式。
$items = $text->categories->category->items;
$items->registerXPathNamespace('so', 'urn:types.partner.api.url.com');
foreach ($items->xpath('so:offer|so:product') as $product_or_offer) {
// Do something
}