显示XML文件中的两个元素


Showing Two elements from XML file

文件可以在以下URL上看到:#

上面的XML文件由两个元素组成,我希望按顺序显示它们,即"产品"answers"报价"。

我使用SimpleXML来加载XML提要。

$text=simplexml_load_file('feed.xml');

我还使用foreach来显示文件中的数据

foreach ($text->categories->category->items->product as $product) {}

如何使用for each语句或任何其他方法显示XML文件中的"产品"answers"优惠"?

<items>是否只包含<product><offer>元素?如果是:

foreach ($text->categories->category->items->children() as $product_or_offer) {
    // Do something
}

请参阅http://php.net/simplexmlelement.children


如果您想明确只获取product/proffer元素,可以使用一个简单的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
}

虽然我还没有真正得到您想要的东西,但我将发布一些如何通过xPath处理此XML的示例。

首先选择所有productoffer节点:

$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>';
}