XPath / XML小写查询方法

时间:2014-02-07 11:41:06

标签: php xml xpath

Xpath&下面的PHP代码检查XML文件中任何“name”元素中的文本是否包含字符串“desk”(参见第二行代码)。如果Xpath搜索字符串是“Desk”(带有大写D),它将检索第一个XML名称元素“Desktop”中的文本。但由于Xpath搜索字符串是“桌面”(使用小写d),因此不会检索任何内容。

有没有办法对此进行编码,以便Xpath搜索字符串“desk”(带有小写d)可以从XML文件的name元素中检索“Desktop”(带有大写字母D)?或者有没有办法使查询不区分大小写?

这是XPath和PHP代码:

$xmldoc = simplexml_load_file("products.xml");
$query = $xmldoc->xpath('/products/product[contains(name,"desk")]');  
foreach($query as $Products) {
echo $Products->name . " ";
echo $Products->price . "<br>";
}

这是XML文件(名为product.xml):

<products>
   <product type="Electronics">
      <name>Desktop</name>
      <price>499.99</price>
      <store>Best Buy</store>
   </product>
   <product type="Hardware">
      <name>Hand Saw</name>
      <price>99.99</price>
      <store>Lowes</store>
   </product>
</products>

谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个..

$query = $xmldoc->xpath('/products/product[contains(name,"_esk")]');  

答案 1 :(得分:0)

如果您使用

$query = $xmldoc->xpath('/products/product[contains(translate(name, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"),"desk")]');

你有一个不区分大小写的比较,至少对于翻译调用转换的字母。