文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python与xml数据的交互详解

2024-04-02 19:55

关注

一 什么是XML?

python与json数据的交互详情 在这篇文章中我们介绍了json是一种独立于编程语言和平台的数据存储和交换方式(格式),其实xml和json基本一样,也是一种用于进行数据存储和交换的方式,并且也独立于编程语言和平台。
XML可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。XML设计的宗旨就是用来传输数据的。

二 XML语法规则

1. xml语法规则

xml的语法规则和html的语法规则很像,但却有着明显的差别。相同的是它们都用标签对来存储数据,但是html的标签都是预定义的,而xml的标签则完全是由编辑者自己定义的。

xml的语法规则如下:

<?xml version="1.0" encoding="utf-8"?>
<CFX>
    <Head>
        <TxCode>CHL2108</TxCode>
        <WorkDate>20220629</WorkDate>
        <WorkTime>164506</WorkTime>
    </Head>
    <WDWMSG>
        <login username="张三" password="123456">张三</login>>
        <PayAcct>1</PayAcct>
        <TrnPwd></TrnPwd>
        <TsmNbr>SSM1050000000001</TsmNbr>
        <PwdKeySeq>001</PwdKeySeq>
        <PwdChkVal>6391E8421C007ED5</PwdChkVal>
        <Reverse>D0E8C46A0B765B</Reverse>
    </WDWMSG>
    <PSBMSG>
        <PayAcct>2</PayAcct>
    </PSBMSG>
    <CHL2108>
        <TrnSerial>2207081541590398</TrnSerial>
        <CHLSerial>STM202206291645060000000000</CHLSerial>
        <PayAcct>6232621151792579</PayAcct>
        <HandOrgName>达拉崩吧班德贝蒂卜多比鲁翁·昆图库塔卡提考特苏瓦西拉松·木大</HandOrgName>
        <PrintAcct>755933363410722</PrintAcct>
        <TrnAmt>70000</TrnAmt>
        <TaxVouNo>010021102121600095</TaxVouNo>
        <TaxOrgCode>23301900000</TaxOrgCode>
        <TrnPlace>0075</TrnPlace>
        <TaxPayCode>1456151561650569</TaxPayCode>
        <TrnSrc>STM</TrnSrc>
    </CHL2108>
</CFX>

xml 必须包含根元素,它是所有其它元素的父元素,如上文中的CFXxml 标签必须是成对出现的,即必须有关关闭标签

<?xml version="1.0" encoding="utf-8"?>

上面这部分是xml的文档声明部分,包含了版本信息和编码方式,是可选的。其他

更多的规则请参考:

2. xml与html的区别

xml和html很像,但区别也很大,具体不同如下:

三 python与xml的交互

python获取xml的数据信息一般用xml.dom 来解析,具体如下

1. 获取标签对内的数据

比如提取上面xml文件中PayAcct 标签内的数据

from xml.dom import minidom

#mimidom.parse将xml文件解析成DOM文档
data = minidom.parse('../练习文件/XML练习.XML')
print(type(data))
print('*'*50)

#首先利用data.getElementsByTagName('标签名')提取出标签
payacct = data.getElementsByTagName('PayAcct')
print(type(payacct))
for i in range(len(payacct)):
    print(payacct[i].toxml())#toxml还原xml格式
print('*'*50)

print('PayAcct标签内容如下:')
#再用 firstChild.data 获取标签数据值
for i in range(len(payacct)):
    print(payacct[i].firstChild.data)

如上,minidom.parse()的作用是将xml文档解析成DOM文档,然后通过getElementsTagName()方法提取出标签对,最后通过firstChild.data获取标签内的数据,过程中需要注意的是getElementsTagName()方法提取出标签对返回的结果是一个列表,

结果如下:

>>>
<class 'xml.dom.minidom.Document'>
**************************************************
<class 'xml.dom.minicompat.NodeList'>
<PayAcct>1</PayAcct>
<PayAcct>2</PayAcct>
<PayAcct>6232621151792579</PayAcct>
**************************************************
PayAcct标签内容如下:
1
2
6232621151792579

2. 获取标签属性值

通过getAttribute 获取标签的属性值。如下获取login标签的属性值

<login username="张三" password="123456">张三</login>
from xml.dom import minidom

#mimidom.parse将xml文件解析成DOM文档
data = minidom.parse('../练习文件/XML练习.XML')

#首先利用data.getElementsByTagName('标签名')提取出标签
login = data.getElementsByTagName('login')
print(type(login))
print(login)
for i in range(len(login)):
    print(login[i].toxml())
print('*'*50)

#再用 getAttribute('属性值') 获取标签属性值
print('login的属性值如下:')
print(login[0].getAttribute('username'))
print(login[0].getAttribute('password'))

结果如下:

>>>
<class 'xml.dom.minicompat.NodeList'>
[<DOM Element: login at 0x188b60ec048>]
<login password="123456" username="张三">张三</login>
**************************************************
login的属性值如下:
张三
123456

到此这篇关于python与xml数据的交互详解的文章就介绍到这了,更多相关python与xml数据交互内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯