XML(EXtensible Markup Language):可扩展标记语言,被设计用来传输和存储数据。
1、Python解析XML方式
Python处理XML文件主要有三种方式:
- XML.DOM模块
DOM:文件对象模型(Document Object Model),在解析XML文件时一次性将 XML 数据读取到内存中解析成一个树,通过对树的操作来操作 XML。 缺点:内存占用率高; - XML.SAX模块
SAX:基于事件驱动的API (simple API for XML ),通过在解析 XML 的过程中触发一个个的事件并调用用户定义的回调函数来处理 XML 文件。 优点:事件驱动,无需将文件全部读取到内存中; - xml.etree.ElementTree模块
优点:相比于DOM内存占用率低,性能上和SAX相比接近; Python标准库中,提供了ET的两种实现:
xml.etree.ElementTree(Python实现); xml.etree.cElementTree(C语言实现);
待解析xml文件
<?xml version="1.0" encoding="UTF-8"?>
<c:Tables>
<o:Table Id="o3888">
<a:ObjectID>9C9E4066-4C71-4A3E-8B82-667D001B64F8</a:ObjectID>
<a:Name>发票缴销申请</a:Name>
<a:Code>JC_HXZG_FP_JXSQ</a:Code>
<a:CreationDate>1589337305</a:CreationDate>
<a:Creator>pws</a:Creator>
<a:ModificationDate>1593477162</a:ModificationDate>
<a:Modifier>pws</a:Modifier>
<a:Comment>发票缴销申请</a:Comment>
<a:TotalSavingCurrency/>
<a:Description>1.数据源:
核心征管:HX_FP.FP_JXSQ
2.处理规则:</a:Description>
<c:ExtendedCollections>
<o:ExtendedCollection Id="o4280">
<a:ObjectID>68AD7C9A-04CF-4911-9816-5465B7EB14A3</a:ObjectID>
<a:Name>Related Columns</a:Name>
<a:ExtendedBaseCollection.CollectionName>Related Columns</a:ExtendedBaseCollection.CollectionName>
<a:CreationDate>1619489206</a:CreationDate>
<a:Creator>pws</a:Creator>
<a:ModificationDate>1619489206</a:ModificationDate>
<a:Modifier>pws</a:Modifier>
</o:ExtendedCollection>
</c:ExtendedCollections>
<c:Columns>
<o:Column Id="o4281">
<a:ObjectID>45FFDDB7-0BE3-4B50-925E-7E76B8B9C315</a:ObjectID>
<a:Name>缴销申请UUID</a:Name>
<a:Code>JXSQUUID</a:Code>
<a:CreationDate>1589337305</a:CreationDate>
<a:Creator>pws</a:Creator>
<a:ModificationDate>1594004217</a:ModificationDate>
<a:Modifier>pws</a:Modifier>
<a:Comment>缴销申请UUID</a:Comment>
<a:DataType>VARCHAR(37)</a:DataType>
<a:Length>37</a:Length>
<a:Column.Mandatory>1</a:Column.Mandatory>
</o:Column>
<o:Column Id="o4282">
<a:ObjectID>843FD3F4-1B2E-464D-84F0-AE178078831F</a:ObjectID>
<a:Name>登记序号</a:Name>
<a:Code>DJXH</a:Code>
<a:CreationDate>1589337305</a:CreationDate>
<a:Creator>pws</a:Creator>
<a:ModificationDate>1593477162</a:ModificationDate>
<a:Modifier>pws</a:Modifier>
<a:Comment>登记序号</a:Comment>
<a:DataType>NUMBER(20)</a:DataType>
<a:Length>20</a:Length>
</o:Column>
<o:Column Id="o4286">
<a:ObjectID>379E9E07-B8A0-49EB-8A1A-C295A9857A0D</a:ObjectID>
<a:Name>受理日期</a:Name>
<a:Code>SLRQ</a:Code>
<a:CreationDate>1589337305</a:CreationDate>
<a:Creator>pws</a:Creator>
<a:ModificationDate>1593477162</a:ModificationDate>
<a:Modifier>pws</a:Modifier>
<a:Comment>受理日期</a:Comment>
<a:DataType>DATE</a:DataType>
</o:Column>
<o:Column Id="o4294">
<a:ObjectID>7600D929-2493-40B6-A009-BDE4119E23A6</a:ObjectID>
<a:Name>数据同步时间</a:Name>
<a:Code>SJTB_SJ</a:Code>
<a:CreationDate>1589337305</a:CreationDate>
<a:Creator>pws</a:Creator>
<a:ModificationDate>1593477162</a:ModificationDate>
<a:Modifier>pws</a:Modifier>
<a:Comment>数据同步时间</a:Comment>
<a:DataType>TIMESTAMP(6)</a:DataType>
<a:Length>6</a:Length>
</o:Column>
<o:Column Id="o4295">
<a:ObjectID>883E9713-B0BA-4EF7-B8DC-E7D3D99FAF60</a:ObjectID>
<a:Name>办理人员身份证件类型</a:Name>
<a:Code>BLRYSFZJLX_DM</a:Code>
<a:CreationDate>1589337305</a:CreationDate>
<a:Creator>pws</a:Creator>
<a:ModificationDate>1594004217</a:ModificationDate>
<a:Modifier>pws</a:Modifier>
<a:Comment>办理人员身份证件类型</a:Comment>
<a:DataType>VARCHAR(3)</a:DataType>
<a:Length>3</a:Length>
</o:Column>
<o:Column Id="o4302">
<a:ObjectID>3DDCB4AE-165D-4C49-A5EB-C3B4293A3589</a:ObjectID>
<a:Name>数据集成批次号</a:Name>
<a:Code>SJJCPCH</a:Code>
<a:CreationDate>1589337305</a:CreationDate>
<a:Creator>pws</a:Creator>
<a:ModificationDate>1594004217</a:ModificationDate>
<a:Modifier>pws</a:Modifier>
<a:Comment>数据集成批次号</a:Comment>
<a:DataType>VARCHAR(20)</a:DataType>
<a:Length>20</a:Length>
</o:Column>
</c:Columns>
<c:Keys>
<o:Key Id="o4303">
<a:ObjectID>92207BC1-E331-4969-B43E-6F3231D24203</a:ObjectID>
<a:Name>主键_发票缴销申请</a:Name>
<a:Code>PK_JC_HXZG_FP_JXSQ</a:Code>
<a:CreationDate>1589337305</a:CreationDate>
<a:Creator>pws</a:Creator>
<a:ModificationDate>1593477162</a:ModificationDate>
<a:Modifier>pws</a:Modifier>
<a:Comment>主键_发票缴销申请</a:Comment>
<c:Key.Columns>
<o:Column Ref="o4281"/>
</c:Key.Columns>
</o:Key>
</c:Keys>
<c:PrimaryKey>
<o:Key Ref="o4303"/>
</c:PrimaryKey>
</o:Table>
</c:Tables>
1.1、DOM方式
1.2、SAX方式
1.3、etree.Element方式
2、Python操作XML文件
2.1、xml文件的创建
2.2、节点的操作
|