目標是從一個巨大的 xml 檔案中提取包含預定義代碼的單個產品的所有資料。看起來我正在獲取所選產品,但結果陣列為空。
這是 xml 檔案的一部分,也是將 $result 作為空陣列回傳的函式。:
<ROOT>
<Products>
<Product>
<ProductName><![CDATA[Draining Tube Universal Retail]]></ProductName>
<ProductCode><![CDATA[476521Az-f]]></ProductCode>
<Category><![CDATA[Bathing]]></Category>
<Price>18.000030</Price>
<AvailableQty>9</AvailableQty>
<Condition>New</Condition>
<ProductAttributes><Brand>Bbrand name</Brand></ProductAttributes>
<Location></Location>
<ImageURL><![CDATA[https:url here]]></ImageURL>
<ShippingProductClass></ShippingProductClass>
<ProductSummary><![CDATA[Universal Retail Box Out of Box failure Warranty]]></ProductSummary>
<ProductDescription><![CDATA[<p>Very easy to install<br />• Full instructions provided</p>]]></ProductDescription>
<LenghtCM><![CDATA[101.2]]></LenghtCM>
<WidthCM><![CDATA[48.95]]></WidthCM>
<HeightCM><![CDATA[36.3]]></HeightCM>
<MassKG><![CDATA[1.925]]></MassKG>
</Product>
</Products>
</ROOT>
這是代碼:
$refsku = '476521Az-f';
$xml=file_get_contents( $cache_url_use );
$xml_parse = simplexml_load_string($xml, null, LIBXML_NOCDATA);
$results = $xml_parse->xpath("/ROOT/Products/Product[@ProductCode= " . $refsku . " ]");
echo "<br><pre>"; print_r($results); echo "</pre>";
uj5u.com熱心網友回復:
我相信您的問題是您生成的 XPath 如下所示:
/ROOT/Products/Product[@ProductCode= 476521Az-f ]
我認為該令牌476521Az-f會導致錯誤。它開始看起來像一個數字文字,但Az打破了它。它不能解釋為元素的名稱,<476521Az-f/>因為元素名稱不能以數字開頭。
我認為解決方案是確保您的 XPath 在該字串周圍加上引號,例如
/ROOT/Products/Product[@ProductCode= '476521Az-f' ]
或者
/ROOT/Products/Product[@ProductCode= "476521Az-f" ]
例如
$results = $xml_parse->xpath("/ROOT/Products/Product[@ProductCode='" . $refsku . "']");
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/527427.html
標籤:phpxml路径
下一篇:處理無元素回傳
