簡體   English   中英

PHP-使用XPATH引用具有2個屬性的XML元素

[英]PHP - using XPATH to reference XML element with 2 attributes

我正在使用XPATH(與PHP一起)來基於XML屬性檢索XML數據。 XML結構如下:

<products>
<product category="Desktop">
<name> Dell Desktop (d)</name>
<price>499.99</price>
<shipping cost="10.99" carrier="UPS" />
</product>
</products>

該代碼可以正常工作,因為它可以測試XML元素<product> ,該元素僅具有一個屬性-名為“類別”。

$productVar = "Desktop";
$x_path = $XMLproducts->xpath("/products/product[@category='$productVar']");
foreach($x_path as $Product) {
echo $Product->name . " - " . $Product->price . "<br>";
}

但是接下來的兩個foreach循環不顯示任何內容。 他們測試具有兩個屬性的XML元素<shipping> -“成本”和“運營商”。

$shippingCarrier = "UPS";
$xpath = $XMLproducts->xpath("/products/shipping[@carrier='$shippingCarrier']");
foreach($xpath as $Product) {
echo $Product->name . " - " . $Product->price . "<br>";
}

$shippingCost = "UPS";
$xpath = $XMLproducts->xpath("/products/shipping[@cost='$shippingCost']");
foreach($xpath as $Product) {
echo $Product->name . " - " . $Product->price . "<br>";
}

有什么建議嗎? 謝謝!

你應該用

/products/product/shipping[@carrier='$shippingCarrier']

由於shipping是不是一個直接子products

您還可以像這樣查找所有后代:

/products//shipping[@carrier='$shippingCarrier']

xpath -expressions中,您需要選擇<product>並將條件保留在[]

/products/product[shipping/@carrier='$shippingCarrier']

和...

/products/product[shipping/@cost='$shippingCost']

此外,您需要將$shippingCost設置為"10.99"而不是"UPS"來選擇數據。

看到它正常工作: https : //eval.in/128925

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM