PHP SimpleXMLElement XPath查询异常排查:无命名空间POST XML处理
解决你的XPath查询失败问题
我一眼就发现两个关键问题,导致你的查询始终没有结果:
1. XPath元素名大小写不匹配
XML是大小写敏感的!你提供的XML里根元素是小写的<foo>,但你的XPath写的是//FOO/bar/name——大写的FOO和小写的foo在XML里是完全不同的元素,自然匹配不到任何内容。
2. 代码语法错误
你的SimpleXMLElement构造函数调用少了一个闭合括号,这会直接导致代码语法报错,连XML解析这一步都无法完成。
修正后的完整代码
// 补上缺失的闭合括号,修复语法错误 $xml = new SimpleXMLElement(file_get_contents("php://input")); // 将XPath里的大写FOO改为小写foo,匹配XML实际元素名 $result = $xml->xpath("//foo/bar/name"); print_r($result);
运行结果验证
用你提供的XML内容作为输入,运行修正后的代码,会输出:
Array ( [0] => SimpleXMLElement Object ( [0] => Frank ) )
这样就能正确获取到<name>节点的内容了。
内容的提问来源于stack exchange,提问作者insane4
相关产品推荐
相关产品推荐

