php - 在非分层输入上使用 xpath
问题描述
我在 PHP 中使用 SimpleXML 和 xpath 来读取 xml 文件。问题是文件(不是我自己设计的)并不是真正分层的。例如:
<country>USA</country>
...
...
<city>Los Angeles</city>
<city>San Diego</city>
...
...
<country>Canada</country>
...
...
<city>Toronto</city>
<city>Banff</city>
...
...
<country>Scotland</country>
...
...
<city>Glasgow</city>
<city>Edinburgh</city>
<city>Banff</city>
... 代表任意数量的其他字段。我可以使用 $xml = simplexml_load_file( 'filename' ); 读取文件 我的问题是找到<country>
对应的每个$xml->xpath("//city")
也就是说,我想知道如何处理每个城市的xml数据中最后出现的国家
解决方案
不幸的是,simplexml 不支持 xpath 2.0,因此要实现@Birei 的建议,您必须走很长的路:
$cities = $xml->xpath("//city");
foreach ($cities as $city) {
$country = $city[0]->xpath('./preceding-sibling::country[1]');
echo trim($city) . ' ' . trim($country[0]);
echo "\r\n";
}
你应该得到相同的输出。
推荐阅读
- junit - 如何将日期的 Junit 测试用例编写为字符串格式化程序方法?
- python - 如何使用布尔索引索引熊猫数据框?
- r - 在 R 和 ggplot2 中绘制正态分布的垂直密度
- swift - 将 CIImage 调整为精确大小
- c# - “{”后使用的类型“x”必须是标记扩展。错误代码 0x09c6
- sqlite - Delphi 中的 SQLite 错误地显示单个 unicode 字符字段
- javascript - 如何有多个输入文件?
- node.js - git push 到远程不会终止
- javascript - 使用本地存储保存菜单状态
- python - 在我的博客上 - 匹配的查询不存在