python解析xml文件
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!
本文为博主原创文章,未经博主允许请勿转载!作者:ISmileLi