python解析xml文件

一、前言

项目中需要从一个xml文件中抠出来需要的数据字段,然后存放到一个txt文档中,最开始以为会很快就能搞定,就真傻不拉几的一个一个从里面复制出需要的字段,结果昨天搞了一个小时看看才完成了八分之一的工作量,今天再看剩下的顿时没劲搞啦。灵光一闪。。我为什么不用python把需要的字段抠出来保存到一个txt中呢?这样既能快速完成这枯燥的体力活,又能锻炼我的python编码能力,岂不快哉!

二、xml的字段

使用xml的字段如下(由于太长只贴出部分):

<?xml version="1.0" encoding="UTF-8"?>
<stations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ndbc.noaa.gov/metadata/stationmetadata.xsd" created="2018-12-03T06:00:04Z">
 <station id="0Y2W3" name="Sturgeon Bay CG Station, WI" owner="U.S.C.G. Marine Reporting Stations" pgm="IOOS Partners" type="fixed">
  <history start="2012-06-12" stop="" lat="44.794" lng="-87.313" elev="178.6" met="y" hull="" anemom_height="10.0"/>
 </station>
 <station id="15319" name="Sanha - WANE 25947" owner="Chevron" pgm="Oil and Gas Industry" type="oilrig">
  <history start="2005-07-22" stop="" lat="-5.583" lng="11.833" elev="" met="n" hull="" anemom_height=""/>
 </station>

上面字段中的id、lat、lng的值是我需要的。

三、python代码

python代码如下:

#-*- coding:UTF-8-*-

    from xml.dom.minidom import parse
    import xml.dom.minidom
    
    f = open("/root/PycharmProjects/write_ndbc_pos.txt","w")
    DOMTree = xml.dom.minidom.parse("/root/PycharmProjects/stationmetadata.xml")
    collection = DOMTree.documentElement
    if collection.hasAttribute("stations"):
        print("root element is {}".format(collection.getAttribute("stations")))
    
    stations = collection.getElementsByTagName("station")
    for station in stations:
      
        historys = station.getElementsByTagName('history')
       
        if station.hasAttribute("id") and historys[0].hasAttribute("lat") and historys[0].hasAttribute("lng"):
            print("{0}  {1}  {2}".format(station.getAttribute("id"),historys[0].getAttribute('lat'),historys[0].getAttribute('lng')))
            f.write("{0}  {1}  {2}\n".format(station.getAttribute("id"),historys[0].getAttribute('lat'),historys[0].getAttribute('lng')))
    f.close()

四、结果

保存的结果如下:
在这里插入图片描述

总结:短短十几行代码python,花了不到30分钟的时间搞定啦,python解析xml我还是边学编写的。_估计经常使用python开发的3分钟搞定啦。life is short ,we need python!

posted @ 2018-12-13 22:46  ISmileLi  阅读(13)  评论(0编辑  收藏  举报