我不希望搜索字符串值不区分大小写。我想搜索节点而不考虑区分大小写。如果XML看起来像这样:
<items>
<ITEM>My text!</ITEM>
</items>
我需要这样的工作:
$someXmlDoc->xpath("/items/item/text()");
目前,只有这个有效:
$someXmlDoc->xpath("/items/ITEM/text()");
答案 0 :(得分:2)
php支持的xpath 1.0中没有大小写转换(参见http://jp.php.net/manual/en/class.domxpath.php)
你可以使用翻译功能,如下所示,非常有限。注意:不建议使用,因为它不适用于非英文字符
/items/*[translate(node(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz') = 'item']/text()
Upd:如果node()不起作用,请尝试使用name()
您也可以按照以下方式进行联合
/items/ITEM/text() | /items/item/text()
答案 1 :(得分:0)
这很奇怪。 XML标记区分大小写(http://www.w3schools.com/xml/xml_syntax.asp),因此<item>
和<ITEM>
是两个不同的标记。从而。 "/items/item/text()"
和/items/ITEM/text()
是两条不同的路径。
<items>
<ITEM>My text!</ITEM>
<item>Your text!</item>
</items>
“我的文字”和“您的文字”有不同的xpath
s
答案 2 :(得分:0)
将previous questions考虑在同一主题上另一个问题淹没:“它必须是xml吗?” json怎么样? 要在客户端上将数据编码为json,您可以使用jquery-json,在最小化版本中只需2kb
然后你的服务器端php脚本可以用json_decode()解码数据,你将根据javascript对象/ hash的json表示得到一个原生的php数组/哈希。var jsondata = { sender: "CATS", subject: "All Your Base", items: [] }; for(var i=0; i<8; i++) jsondata.items.push(i);
$.ajax({ url: "http://localhost/test.php", type: "post", dataType: "json", data: $.toJSON(jsondata), contentType: "application/json; charset=utf-8",
答案 3 :(得分:0)
Jonathan Fingland第一个变种对我来说也不起作用, 但我终于找到了解决方案。
应该是
/items/*[translate(name(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz') = 'item']/text()