[英]xpath/php - Select XML element that contain specific attributes using php
[英]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.