【发布时间】:2013-04-30 18:33:44
【问题描述】:
我正在尝试使用 xmlstarlet 提取此 KML 文件中“坐标”节点的内容。
使用 xmlstarlet 本身可以很好地验证 KML 文件。
我已将其缩减为一个包含以下内容的小测试文件:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark>
<name>eurovelo-5 690</name>
<Snippet></Snippet>
<description><![CDATA[ ]]></description>
<styleUrl>#style390</styleUrl>
<LineString>
<tessellate>1</tessellate>
<coordinates>
10.146948,44.790592,97.500000
10.146958,44.790562,97.599998
10.147018,44.790497,97.699997
10.147083,44.790466,97.699997
</coordinates>
</LineString>
</Placemark>
</Document>
</kml>
但运行此查询失败:
xmlstarlet sel -t -c "//coordinates/text()" test.kml
这似乎可以使用在线路径工具正确解析 - http://www.qutoric.com/xslt/analyser/xpathtool.html
我错过了什么吗?
【问题讨论】:
-
PathEnq,您引用的在线 xpath 工具是 XPath 2.0 工具 - 因此它可以识别 XML 中的默认命名空间 - XPath 1.0 工具(例如 xmlstarlet)无法识别默认命名空间,因此需要您使用前缀定义命名空间 - 如接受的答案中所述。
标签: xml xpath kml xmlstarlet