python与xml数据的交互详解
作者:搬砖,赞路费 发布时间:2021-09-12 06:54:10
一 什么是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很像,但区别也很大,具体不同如下:
html标签是预定义的,而xml则是由使用者自己定义
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
来源:https://blog.csdn.net/qq_44690947/article/details/125882945
猜你喜欢
- 目录创建文件夹布局编写命令代码实际应用场景案例1:检查数据库连接是否已就绪案例2:周期性发送邮件每次在启动Django服务之前,我们都会在终
- 本文实例讲述了Python采用socket模拟TCP通讯的实现方法。分享给大家供大家参考。具体实现方法如下:对于TCP server端的创建
- 故障状况:php网站连接mysql失败,但在命令行下通过mysql命令可登录并正常操作。解决方案:1、命令行下登录mysql,执行以下命令:
- 前言在数据分析中,分组聚合二者缺一不可。对数据聚合(求和、平均值等)通常是不可避免的。pd.agg()很方便进行聚合操作。1. 创建Data
- 下面看下python调用函数加括号和不加括号的区别,具体代码如下所示; def bracket(data):return dat
- 有关JS中字符串的相关文章,现在网上大概不计其数了。这里我不想再就这个问题做过多的论述,只是对几种方式的实现在各种浏览器中的执行效率进行对比
- 用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,比如你想要在
- 一个出错的例子#coding:utf-8s = u'中文'f = open("test.txt",&qu
- 核心代码:#!/usr/bin/python# -*- coding: UTF-8 -*-import smtplibimport osim
- 在使用Celery统计每日访问数量的时候,发现一个任务会同时执行两次,发现同一时间内(1s内)竟然同时发送了两次任务,也就是同时产生了两个w
- javascript 代码实现vbscript中的trim、left、right等函数兼容IE,FireFox。<style>b
- 1.相信大家,在经过前面的初步学习之后,相信大家也想要有一个舒适的编程环境了。接下来将交给大家一个简单的配置环境Anaconda + VSC
- 1.什么是并发编程并发编程是实现多任务协同处理,改善系统性能的方式。Python中实现并发编程主要依靠进程(Process):进程是计算机中
- ASP与MySQL的连接ASP和MySQL连接目前有两种方法:一种方法是使用MySQLX之类的组件,不过这种连接方法需要支付一定的费用;另外
- ASP木马防御: 代码如下:const adTypeBinary=1 dim jpg(1):jpg(0)=CB
- 挖坟 交互设计(Interaction Design)产生于二十世纪八十年代,在1984年一次设计会议上,大名鼎鼎的英国交互设计师比尔·莫格
- 我们先看一下淘宝的页面:这么一个庞然大物,该怎么切图呢?显然按照给出的方法也可以完成这项任务,但是做为前端开发的我们是否应该给自己提出更高的
- 在最近一个项目中,表单验证需要对时间的起止范围进行判断:结束时间需大于或等于开始时间。即:结束年须大于起始年;如果相等,则比较起始月与结束月
- 在现在的项目里,不管是电商项目还是别的项目,在管理端都会有导出的功能,比方说订单表导出,用户表导出,业绩表导出。这些都需要提前生成excel
- 本文实例讲述了PHP动态生成指定大小随机图片的方法。分享给大家供大家参考,具体如下:<?php$image_width = 100;$