首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >find_xml_all返回{xml_nodeset (0)}

find_xml_all返回{xml_nodeset (0)}
EN

Stack Overflow用户
提问于 2016-01-11 07:31:43
回答 1查看 1.3K关注 0票数 4

我最近从这个地图下载了KML文件,并尝试使用包xml2来提取营地的信息,例如地理位置、站点周围的设施等,但最后我得到了{xml_nodeset (0)}

字母是我用过的密码,

代码语言:javascript
复制
library(xml2)
campsites <- read_xml("file_path")
xml_find_all(campsites, ".//Placemark")

下面是KML文件的结构(您也可以尝试xml_structure(campsites)),

代码语言:javascript
复制
> library(magrittr)
> campsites
{xml_document}
<kml>
[1] <Document>\n<description><![CDATA[powered by <a href="http://www.wordpress.org">WordPress</a> &amp; <a href="https://www.mapsmarker.com">MapsMarker.com</a>]] ...
>
> campsites %>% xml_children %>% xml_children %>% xml_children
{xml_nodeset (55)}
 [1] <IconStyle>\n  <Icon>\n    <href>http://www.mountaineering-lohas.org/wp-content/uploads/leaflet-maps-marker-icons/tents.png</href>\n  </Icon>\n</IconStyle>
 [2] <IconStyle>\n  <Icon>\n    <href>http://www.mountaineering-lohas.org/wp-content/uploads/leaflet-maps-marker-icons/tents-1.png</href>\n  </Icon>\n</IconStyle>
 [3] <IconStyle>\n  <Icon>\n    <href>http://www.mountaineering-lohas.org/wp-content/uploads/leaflet-maps-marker-icons/tents1.png</href>\n  </Icon>\n</IconStyle>
 [4] <name>香港營地 Hong Kong Camp Site</name>
 [5] <Placemark id="marker-1">\n<styleUrl>#tents</styleUrl>\n<name>æµæ°´éŸ¿ç‡Ÿåœ° ( Lau Shui Heung Camp Site )</name>\n<TimeStamp><when>2013-02-21T04:02:29+08: ...
 [6] <Placemark id="marker-2">\n<styleUrl>#tents</styleUrl>\n<name>鶴藪營地(Hok Tau Camp Site)</name>\n<TimeStamp><when>2013-02-21T04:02:18+08:00</when></Tim ...
 [7] <Placemark id="marker-3">\n<styleUrl>#tents</styleUrl>\n<name>涌背營地(Chung Pui Camp Site)</name>\n<TimeStamp><when>2013-02-22T11:02:02+08:00</when></T ...
 [8] <Placemark id="marker-4">\n<styleUrl>#tents</styleUrl>\n<name>æ±å¹³æ´²ç‡Ÿåœ° (Tung Ping Chau Campsite)</name>\n<TimeStamp><when>2013-02-22T11:02:39+08:00</ ...
 [9] <Placemark id="marker-5">\n<styleUrl>#tents</styleUrl>\n<name>ç£ä»”å—營地(Wan Tsai Peninsula South Campsite)</name>\n<TimeStamp><when>2013-02-22T11:02:2 ...
[10] <Placemark id="marker-6">\n<styleUrl>#tents</styleUrl>\n<name>ç£ä»”西營地 (Wan Tsai Peninsula West Campsite)</name>\n<TimeStamp><when>2013-02-22T11:02:3 ...
...

正如您所看到的,有一些名为"Placemark“的节点,为什么我不能使用xml_find_all找到节点呢?我的密码有什么错误吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-11 09:13:37

看起来您有几个名称空间。如果将前缀添加到xpath中,则可以获得节点集。

代码语言:javascript
复制
xml_ns(campsites)
# d1   <-> http://www.opengis.net/kml/2.2
# atom <-> http://www.w3.org/2005/Atom
# gx   <-> http://www.google.com/kml/ext/2.2

xml_find_all(campsites, ".//d1:Placemark", xml_ns(campsites))
# {xml_nodeset (45)}
#  [1] <Placemark id="marker-1">\n<styleUrl>#tents</styleUrl>\n<name>流水響營地 ( La ...
#  [2] <Placemark id="marker-2">\n<styleUrl>#tents</styleUrl>\n<name>鶴藪營地(Hok T ...
#  ...

要获取cdata中的文本,您可以使用以下内容

代码语言:javascript
复制
xml_text(xml_find_all(campsites, "//d1:description", xml_ns(campsites))) 
# or "//d1:description/text()"
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34716234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档