Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python-parseXML

python-parseXML

作者头像
零式的天空
发布于 2022-03-02 12:17:39
发布于 2022-03-02 12:17:39
34100
代码可运行
举报
文章被收录于专栏:零域Blog零域Blog
运行总次数:0
代码可运行

以前有使用过python 解析xml的内容的两种方法,先贴出来代码,具体的含义之后搞仔细了再补充上来。

xml 文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<collection>
<Cycle1>
	<Number>628398</Number>
	<Signal>15168.389648 19429.083984 24276.886719 18786.134766 </Signal>
	<Background>-739.025574 -691.423401 -794.166931 -1007.662659 </Background>
</Cycle1>
<Cycle2>
	<Number>482765</Number>
	<Signal>10683.573242 14735.889648 19846.058594 13917.609375 </Signal>
	<Background>-445.148132 -482.349854 -625.839417 -890.880981 </Background>
</Cycle2>
</collection>

使用DOM 解析xml:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# parseDOM.py

#!/usr/bin/python
#coding=utf-8

from xml.dom.minidom import parse
import xml.dom.minidom

# 使用minidom解析器打开 XML 文档
DOMTree = xml.dom.minidom.parse("test.xml")
collection = DOMTree.documentElement

trans = {'Number': 'NUMBER', 'Signal': 'SIGNAL', 'Background': 'BACKGROUND'}
resultDict = {}

for cycle in xrange(1, 3):
	cycleData = collection.getElementsByTagName("Cycle%d" % cycle)
	if not cycleData: continue
        else:
            for k in trans:
                    value = cycleData[0].getElementsByTagName(k)[0]
                    value = value.childNodes[0].data
                    value = value.strip().split()

                    resultDict.setdefault(trans[k], []).extend(map(float, value))

for k in resultDict:
	print k, resultDict[k]

# 输出
tigerose@pc ~/github/parseXml
$python parseDOM.py 
SIGNAL [15168.389648, 19429.083984, 24276.886719, 18786.134766, 10683.573242, 14735.889648, 19846.058594, 13917.609375]
NUMBER [628398.0, 482765.0]
BACKGROUND [-739.025574, -691.423401, -794.166931, -1007.662659, -445.148132, -482.349854, -625.839417, -890.880981]

使用 SAX解析xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# parseSAX.py

#!/usr/bin/python
#coding=utf-8

import xml.sax

class XmlHandler( xml.sax.ContentHandler ):
   def __init__(self):
      self.CurrentData = ""
      self.Number = ""
      self.Signal = ""
      self.Background = ""

   # 元素开始事件处理
   def startElement(self, tag, attributes):
      self.CurrentData = tag
      if tag.startswith('Cycle'):
         print "*****%s*****" % tag
         #title = attributes["Number"]
         #print "Title:", title

   # 元素结束事件处理
   def endElement(self, tag):
      if self.CurrentData == "Number":
         print "NUMber:", self.Number
      elif self.CurrentData == "Signal":
         print "SIGNAL:", self.Signal
      elif self.CurrentData == "Background":
         print "BACKGROUND:", self.Background
      self.CurrentData = ""

   # 内容事件处理
   def characters(self, content):
      if self.CurrentData == "Number":
         self.Number = content
      elif self.CurrentData == "Signal":
         self.Signal = content
      elif self.CurrentData == "Background":
         self.Background = content
  
if ( __name__ == "__main__"):
   # 创建一个 XMLReader
   parser = xml.sax.make_parser()
   # turn off namepsaces
   parser.setFeature(xml.sax.handler.feature_namespaces, 0)

   # 重写 ContextHandler
   Handler = XmlHandler()
   parser.setContentHandler( Handler )
   
   parser.parse("test.xml")

# 输出
tigerose@pc ~/github/parseXml
$python parseSAX.py 
*****Cycle1*****
NUMber: 628398
SIGNAL: 15168.389648 19429.083984 24276.886719 18786.134766 
BACKGROUND: -739.025574 -691.423401 -794.166931 -1007.662659 
*****Cycle2*****
NUMber: 482765
SIGNAL: 10683.573242 14735.889648 19846.058594 13917.609375 
BACKGROUND: -445.148132 -482.349854 -625.839417 -890.880981
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Python】基础知识(XML)
XML 指可扩展标记语言(eXtensibleMarkupLanguage)。可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。
六月暴雪飞梨花
2023/09/22
4070
【Python】基础知识(XML)
DBLP数据集使用Python解析
dblp的使用 总的来说,DBLP集成元素不多,只有最基本的论文题目,时间,作者,发表类型及期刊或会议名称等等。可能很多人想要的标签、关键词都没有。但是,基于DBLP数据集这些基本的元素,可以挖掘、利用的也是很多。例如官网给出的统计信息,就能引申出很多东西。 涉及到DBLP,我能一下想到的关键词:经典的复杂网络,小世界,无标度,合作关系网,关系推荐,聚类,连接预测,随机游走,中心作者分析,作者影响力分析,研究热点发展等等,非常多。因此,DBLP是个很丰富宝贵的资源。 dblp下载 dblp.dtd
ZONGLYN
2019/08/08
3.6K0
【测试开发】python系列教程:xml 模块
XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
雷子
2023/08/25
2820
【测试开发】python系列教程:xml 模块
Python 进阶(八):XML 基本操作
XML(Extensible Markup Language)中文译为可扩展标记语言,它是一种简单、灵活、易扩展的文本格式,它主要关注数据内容,常用来传送、存储数据。
Python小二
2020/08/18
6800
Python 进阶(八):XML 基本操作
季更56/90
编程随想 Python解析xml import xml.dom.minidom xmlstr = '''<NetworkInterfaceList><NetworkInterface> <ipAddress>15.18.91.195</ipAddress> <subnetMask>255.255.255.240</subnetMask> <MACAddress>a4:14:37:7b:a8:d2</MACAddress> </NetworkInterface></NetworkInterfaceList>
编程随想曲
2022/04/21
1720
Python - DOM操作XML技巧汇总
DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口。HTML DOM 定义了访问和操作 HTML 文档的标准方法。将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。
为为为什么
2022/08/04
2K1
Python - DOM操作XML技巧汇总
Python操作xml
Xml XML指可扩展标记语言(Extensible Markup Language) XML被设计用于结构化、存储和传输数据 XML是一种标记语言,很类似于HTML XML没有像HTML那样具有预定义标签,需要程序员自定义标签。 XML被设计为具有自我描述性,并且是W3C的标准 XML元素 XML的元素是指从开始标签直到结束标签的部分(均包括开始结束)。 一个元素可以包含: 1、其他元素 2、文本 3、属性 4、或混合以上所有 XML语法规则 所有的XML元素都必须有一个开始标签和结束标签,
py3study
2020/01/10
2.5K0
python解析XML文件并转存到excel「建议收藏」
如果xml文件较大,涉及到的属性比较多,人工敲代码也比较耗费时间。可以使用以下代码实现代码内容转换。
全栈程序员站长
2022/09/23
1.8K0
python解析XML文件并转存到excel「建议收藏」
以『赘婿』为实战案例,手把手教会你用python爬取『爱奇艺』视频弹幕
最近爱奇艺独播热剧『赘婿』特别火,号主我也在一直追,借助手中的技术,想爬取弹幕分析该剧的具体情况以及网友的评论!
Python研究者
2021/03/05
1.5K0
以『赘婿』为实战案例,手把手教会你用python爬取『爱奇艺』视频弹幕
Python爬取《赘婿》弹幕
在近期的工作代码中我遇到了一些小问题,导致了我的更新慢了不少。今天我就想把我在之前遇到的问题分享给大家,并通过一篇实战内容来教会大家,希望各位小伙伴以后遇到类似问题的时候,可以想起我的文章,并解决问题。
程序员迪迪
2021/12/23
6390
【python】SAX和DOM处理XML文件
SAX和DOM都是用于处理XML文件的技术,但它们的处理方式不同。SAX是一种基于事件驱动的解析方式,它逐行读取XML文件并触发相应的事件加粗样式,从而实现对XML文件的解析。而DOM则是将整个XML文件加载到内存中,形成一棵树形结构,通过对树的遍历来实现对XML文件的解析。两种方式各有优缺点,具体使用哪种方式取决于具体的需求。
20岁爱吃必胜客
2023/03/07
9810
【python】SAX和DOM处理XML文件
Python XML解析之DOM
DOM是一种跨语言的XML解析机制,DOM把整个XML文件或字符串在内存中解析为树型结构方便访问。
py3study
2020/01/19
1.7K0
深入解读Python解析XML的几种方式
本文将介绍深入解读利用Python语言解析XML文件的几种方式,并以笔者推荐使用的ElementTree模块为例,演示具体使用方法和场景。文中所使用的Python版本为2.7。 在XML解析方面,Py
CDA数据分析师
2018/02/05
3K0
深入解读Python解析XML的几种方式
利用Python进行XML转CSV
    csvFile = open(filePrefix+'.csv', 'wb')  #注意是二进制写入,否则会有多余空格
py3study
2020/01/08
1.5K0
Python处理XML文件
XML全称是Extensible Markup Language,中文名为可扩展标记语言。对xml的介绍可以看一下w3c的介绍。网络中数据传输的常见格式有json、xml、txt等。json很简单,xml稍微复杂,但是在python面前都不是事。 python有三种方式解析xml文档:SAX,DOM,以及 ElementTree(引自 菜鸟教程-Python XML解析),sax有些复杂,dom简单但是解析速度上不如sax。但是咱就是说,都选择Python了,肯定是想“更简单”。所以本文主要介绍python通过DOM方式对xml文件的解析读取、创建、修改等操作。 python有内置的模块:xml.dom(xml.dom官方文档)和xml.dom.minidom(xml.dom.minidom官方文档),本文主要使用xml.dom.minidom这个内置模块。
Crayon鑫
2023/10/10
4320
python 解析xml文件(常用)
from xml.dom.minidom import parse import xml.dom.minidom
用户5760343
2019/10/21
9520
[转载] python 解析xml 文件
首先新建一个xml文件,countries.xml。内容是在python官网上看到的。
py3study
2020/01/19
1.5K0
Python快速入门教程2:Python 面向对象
1.1 定义类     通常你需要在单独的文件中定义一个类     [root@hadron python]# vi Employee.py
程裕强
2022/05/06
4240
【python】DOM模块读写XML文件
DOM模块是指文档对象模型,它是一种用于表示和操作HTML和XML文档的API。通过DOM模块,我们可以使用JavaScript来动态地修改网页的内容和结构,实现交互效果和动态更新。
20岁爱吃必胜客
2023/03/08
7700
【python】DOM模块读写XML文件
python解析xml文件
​ getElementsByTagName()---->class Element ​ Element.childNodes ------>Dom 类型
Dean0731
2020/05/08
1.6K0
相关推荐
【Python】基础知识(XML)
更多 >
LV.1
这个人很懒,什么都没有留下~
作者相关精选
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
加入讨论
的问答专区 >
KOL擅长5个领域
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档