首页 > 编程语言 >python XML 文件解析

python XML 文件解析

时间:2024-04-24 14:11:54浏览次数:34  
标签:XML xml xmlns python text xxx ns 解析

XML 文件认识

<a xmlns:ns="xxx" attr1="33">
  <ns:b>1
    <c>2
      <d/>3
    </c>
  </ns:b>4
</a>

xml每个节点可以分为

  • tag : a,ns:b,c,d都是tag
  • text : 1,2是text
  • tail : 3,4是tail.3是属于d的tail,4是ns:b的tail
  • attrib : 必须是键值对(key=value),定义在标签<>中,attr1="33"就是a的attrib

一些特殊的case

  • 命名空间
    xmlns:ns="xxx" 也符合attrib的定义但是它不是,xmlns是特殊的关键字,它定义了命名空间ns,在后面使用find族函数查找节点b时需要传入命名空间否则找不到,并且b的tag是{xxx}b而不是ns:b. xxx是上面定义的ns的值.
  • <d/> 是自闭合节点相当于是<d></d>的简写.

解析XML

了解XML结构后解析它就简单了,主要步骤就是 定位加获取需要的值(通常是text)
下面是解析XML会用到的一些API

import xml.etree.ElementTree as ET

# 有使用xmlns的需要先获取namespace
# 可以用这个正则表达式去匹配 xmlns:(\w+) ?= ?"(.*)"

xml_tree = ET.parse(xml_file) #得到xml tree 用于文件级别的操作
root_elment = xml_tree.getroot()
b_elment = root.findall("ns:b",namespace) #如果没用xmlns就不要第二个参数
#namespace是用正则表达式匹配到的,类似这样 {'ns'='xxx'}
#find or findall 只能找到当前节点的下一层,更下层的不会搜索,find只返回找到的第一个,findall返回所有

b_elment.text #就可以获取到 1 了

标签:XML,xml,xmlns,python,text,xxx,ns,解析
From: https://www.cnblogs.com/tggpx/p/18154607

相关文章

  • python包:torchvision
    torch 是一个偏向于底层的包, 做一些较为基础 矩阵运算 对于不同的样本比如图像,声音,文字, 之类,有更加针对性的包 比如,针对图片 他的矩阵处理专用包就是:torchvision 这个就需要单独安装,这个包的体积不是很大,我们可以直接尝试安装 pipinstalltorchvision......
  • 在windows下使用COSCMD时因Python版本不支持导致报SafeConfigParser不支持的错误
    在Windows下通过pip安装COSCMD后,使用相关命令操作Coscmd时报错,具体看错误信息是:SafeConfigParser不再支持。这是因为本地的python的版本是3.12.2,此版本已经不再支持SafeConfigParser这个类。而CosCmd的源代码是用的SafeConfigParser这个类,所以导致报错。 解决方案:修改C:\Pyth......
  • python包:torch
    torch 这个包非常大,安装也非常麻烦。基本可以上,他是深度学习里面重要的一个包,要安装torch  首先要确定自己的操作系统,自己的python版本,自己的版本, 是要安装CPU版本的torch,还是GPU版本的torch  ***我这边是WIN10专业版。Python3.8.10。我自己有泰坦RTX的显......
  • 在阿里云服务器上安装python3.6.3
    阿里云服务器试用1、先进到服务器列表2、进入远程连接客户端使用账号密码进行连接即可用xshell或putty连接了=============================================================================一般系统中默认是python2,下面是python3安装流程一、下载https://www.pyth......
  • python中时间转换,获取上一月上一周,本月,本周
    defpaserTime(timestamp):t=time.time()f=time.localtime(timestamp/1000)print(t)#原始时间数据#print(int(t))#秒级时间戳print(int(round(t*1000)))#毫秒级时间戳#nowTime=lambda:i......
  • Python GUI开发- PyQt5 开发小工具环境入门
    前言常见的python开发gui的库有Tkinter,PyQt5,wxPython等。本教程是选择PyQt5开发桌面小工具。环境准备只需pip安装即可快速准备好开发环境pipinstallpyqt5快速开始创建一个空的window窗口Qapplication():每个GUI都必须包含一个Qapplication,argv表示获取命令行参数,如果......
  • GaussDB SQL查询语句执行过程解析
    本文分享自华为云社区《【GaussTech第2期】GaussDBSQL查询语句执行过程解析》,作者:GaussDB数据库。SQL于关系型数据库而言,重要性不言而喻。就像一个乐团的指挥,指导着作品的正确演绎和节奏的和谐统一。华为云GaussDB作为新一代关系型分布式数据库,具备卓越的技术性能和行业竞争......
  • jackson.dataformat.xml 反序列化 对象中包含泛型
    重点:@JacksonXmlPropertylocalName指定本地名称@JacksonXmlRootElementlocalName指定root的根路径的名称,默认值为类名@JsonIgnoreProperties(ignoreUnknown=true)这个注解写在类上,用来忽略在xml中有的属性但是在类中没有的情况@JacksonXmlElementWrapper(useWrapping(def......
  • 抢先看!美团、京东、360等大厂面试题解析,技术面试必备。
    技术面试必备!美团、京东、360等大厂面试题详解,让你轻松应对各大公司面试挑战!往期硬核面经哦耶!冲进腾讯了!牛逼!上岸腾讯互娱和腾讯TEG!腾讯的面试,强度拉满!前几篇文章分享了上岸腾讯的最新面经。不少粉丝股东留言说别只发腾讯的啦,其他大厂的也安排一些吧,比如美团、360、京东的......
  • python将字典转换为对象(type的高级用法)
    创建对象使用type()函数还可以动态创建对象。在Python中,对象本质上也是一种类型,因此可以使用type()函数来创建对象。例如:obj=type('MyObject',(),{'attr':'value'})()等价于classMyObject:attr='value'obj=MyObject()创建类使用type()函数还可以......