You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于libxml2与C语言处理OSM格式XML文件的技术问询

解析OSM格式XML的示例片段(C语言+libxml2场景)

先把你提供的OSM XML片段整理成带语法高亮的代码块,方便查看和后续处理:

<way id="9484424" visible="true" version="8" changeset="11179686" timestamp="2012-04-04T18:01:31Z" user="Davlak" uid="217070">
  <nd ref="72843570"/>
  <nd ref="963203594"/>
  <nd ref="612588857"/>
  <nd ref="300164764"/>
  <nd ref="72843572"/>
  <tag k="highway" v="unclassified"/>
  <tag k="name" v="Via Giorgio Pitacco"/>
  <tag k="odbl" v="clean"/>
  <tag k="oneway" v="yes"/>
</way>
<way id="11378242" visible="true" version="29" changeset="22876351" timestamp="2014-06-11T18:00:17Z" user="Davlak" uid="217070">
  <nd ref="101181728"/>
  <nd ref="2911704721"/>
  <nd ref="2911704714"/>
  <nd ref="101181731"/>
  <tag k="foot" v="yes"/>
  <tag k="highway" v="trunk_link"/>
  <tag k="lanes" v="2"/>
  <tag k="lit" v="yes"/>
  <tag k="maxspeed" v="40"/>
  <tag k="mofa" v="no"/>
  <tag k="moped" v="no"/>
  <tag k="motorroad" v="yes"/>
  <tag k="name" v="Circonvallazione Tiburtina"/>
  <tag k="oneway" v="yes"/>
  <tag k="sidewalk" v="right"/>
</way>
<way id="20507982" visible="true" version="11" changeset="17228559" timestamp="2013-08-05T14:00:29Z" user="Davlak" uid="217070">
  <nd ref="219557958"/>
  <nd ref="1920238894"/>
  <nd ref="1701671630"/>
  <nd ref="1920238892"/>
  <nd ref="219557991"/>
  <tag k="highway" v="residential"/>
  <tag k="lit" v="yes"/>
  <tag k="name" v="Via Prenestina"/>
</way>
<way id="20507983" visible="true" version="14" changeset="26174383" timestamp="2014-10-18T17:12:55Z" user="Privits" uid="..."/>

结合你用C语言+libxml2处理的场景,给你几个实用的处理要点:

  • 遍历<way>节点:用xmlDocPtr加载文档后,通过xmlNodePtr从根节点开始遍历,筛选出节点名为way的元素
  • 提取属性:比如要获取way的id,用xmlGetProp(way_node, "id"),注意返回的字符串是libxml2分配的,用完要调用xmlFree()释放
  • 处理子节点:每个<way>下的<nd>和<tag>是子节点,可以循环遍历子节点,判断节点名来区分:
    • 遇到nd节点时,提取ref属性获取节点引用ID
    • 遇到tag节点时,分别提取k和v属性,得到标签的键值对(比如highway=unclassified这类信息)
  • 大文件处理:OSM文件通常很大,建议用SAX解析器(xmlSAXHandler)来流式处理,避免一次性加载整个文档到内存,提升效率

内容的提问来源于stack exchange,提问作者Claudio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:51:43