如何在PHP xpath中对节点执行不区分大小写的搜索?
我不希望字符串值的搜索不区分大小写。我想搜索节点,不考虑区分大小写。如果XML如下所示:如何在PHP xpath中对节点执行不区分大小写的搜索?,php,xpath,Php,Xpath,我不希望字符串值的搜索不区分大小写。我想搜索节点,不考虑区分大小写。如果XML如下所示: <items> <ITEM>My text!</ITEM> </items> 目前,只有这样做有效: $someXmlDoc->xpath("/items/ITEM/text()"); xpath 1.0中没有php支持的大小写转换(请参阅) 您可以在非常有限的意义上使用下面所示的translate函数。注意:不推荐,因为它不适用于非英语字符
<items>
<ITEM>My text!</ITEM>
</items>
目前,只有这样做有效:
$someXmlDoc->xpath("/items/ITEM/text()");
xpath 1.0中没有php支持的大小写转换(请参阅) 您可以在非常有限的意义上使用下面所示的translate函数。注意:不推荐,因为它不适用于非英语字符
/items/*[translate(node(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz') = 'item']/text()
Upd:如果node()不起作用,请尝试name()
你也可以做如下的联合
/items/ITEM/text() | /items/item/text()
这很奇怪。XML标记区分大小写(),因此
和
是两个不同的标记。因此“/items/item/text()”
和/items/item/text()
是两个不同的路径
<items>
<ITEM>My text!</ITEM>
<item>Your text!</item>
</items>
我的文字!
你的文字!
“我的文本”和“你的文本”有不同的xpath
s考虑到你对同一主题的看法,另一个问题是:“它必须是xml吗?”json呢?要在您可以使用的客户端上将数据编码为json,在最小化版本
var jsondata={
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",
发送者:“猫”,
主题:“所有你的基础”,
项目:[]
};
对于(var i=0;iJonathan Fingland,第一种变体对我也不起作用,
但我终于找到了解决办法
应该是
/items/*[translate(name(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz') = 'item']/text()
重复:答案已经在那里:)嗨,比约恩——我确实看到了,但它似乎为字符串值的不区分大小写提供了答案,而不是节点,这是我无法理解的。联合有效,但转换无效。我接受这个答案。谢谢:)
/items/*[translate(name(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz') = 'item']/text()