Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件,封装函数
总结了一下使用Python对xml文件的解析,用到的模块儿如下:
分别从xml字符串和xml文件转换为xml对象,然后解析xml内容,查询指定信息字段。
- from xml.dom.minidom import parse, parseString
- from xml.etree import ElementTree
- import xml.dom.minidom
- """
- Get XML String info 查询属性值
- response:xml string
- tag:xml tag
- element:xml attribute
- """
- def get_xml_info(response, element):
- DOMTree = xml.dom.minidom.parseString(response)
- return DOMTree.documentElement.getAttribute(element)
- """
- Get XML String info 查询制定名称的特定标签id
- xmlstring:xml str
- return config id
- """
- def get_config_id_from_xml(xmlstring, scan):
- root = ElementTree.fromstring(xmlstring)
- configs = root.findall('config')
- for config in configs:
- config_name = config.find('name').text
- if config_name == scan:
- return config.attrib['id']
- """
- Get XML String info 查询指定id
- xmlstring:xml str
- return report id
- """
- def get_report_id_from_xml(xmlstring):
- root = ElementTree.fromstring(xmlstring)
- report_id = root.find('report_id').text
- return report_id
- """
- Get XML String info
- xmlstring:xml str
- return progress
- """
- def get_progress_from_xml(xmlstring):
- root = ElementTree.fromstring(xmlstring)
- task = root.find('task')
- progress = float(task.find('progress').text)
- if progress < 0:
- return 100.0
- else:
- return progress
- """
- Get XML Report info 从xml文件查询
- file_path : report path
- """
- def get_xml_report(file_path):
- report = {}
- result_dicts = {}
- resultsList = []
- try:
- root = ElementTree.parse(file_path)
- except:
- return {}
- if root is not None:
- creation_time = root.find("creation_time")
- if creation_time is not None:
- report[creation_time.tag] = creation_time.text
- if root.find("report") is not None:
- scan_start = root.find("report").find("scan_start")
- if scan_start is not None:
- if scan_start.text:
- report[scan_start.tag] = scan_start.text
- results = root.getiterator("result")
- if results is not None:
- for result in results:
- if result.find("threat") is not None:
- if result.find("threat").text != "Log":
- resultsList.append(getResults(result))
- report["Results"] = resultsList
- return report
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件,封装函数的更多相关文章
- xml dom minidom
一. xml相关术语: 1.Document(文档): 对应一个xml文件 2.Declaration(声明): <?xml version="1.0" encoding=& ...
- python XML文件解析:用xml.dom.minidom来解析xml文件
python解析XML常见的有三种方法: 一是xml.dom.*模块,是W3C DOM API的实现,若需要处理DOM API则该模块很合适, 二是xml.sax.*模块,它是SAX API的实现,这 ...
- python 应用xml.dom.minidom读xml
xml文件 <?xml version="1.0" encoding="utf-8"?> <city> <name>上海&l ...
- python模块:xml.dom.minidom
"""Simple implementation of the Level 1 DOM. Namespaces and other minor Level 2 featu ...
- python 之模块之 xml.dom.minidom解析xml
# -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...
- python-minidom模块【解析xml】
1,xml的文档结构 1.1,XML文档包括XML头信息和XML信息体 1.1.1,XML文档头信息 <?xml version="1.0" encoding="u ...
- nodejs模块xml2js解析xml的坑
在一个项目中,用到nodejs模块xml2js解析xml,xml的数据如下: <xml> <MsgId>6197906553041859764</MsgId> &l ...
- [java开发篇][dom模块] 遍历解析xml
http://blog.csdn.net/andie_guo/article/details/24844351 XML DOM节点树 XML DOM将XML文档作为树结构,树结构称为一个节点树.所有的 ...
- java解析xml汇总(转自倾城幻影-Java解析xml汇总,链接:http://www.cnblogs.com/jiugehuanying/archive/2012/01/12/2320058.html)
[引言] 目前在Java中用于解析XML的技术很多,主流的有DOM.SAX.JDOM.DOM4j,下文主要介绍这4种解析XML文档技术的使用.优缺点及性能测试. [一.基础知识--扫盲] sax.do ...
随机推荐
- c++ socket发送数据时,sendData = char * string 导致的乱码问题
解决方法:将string 通过copy函数复制到某个char[] 1. string res =“xxx”; char arr[100]; int len = res.copy(arr, 100); ...
- 超级好用的excel导出方法,比phpexcel快n倍,并且无乱码
public function exportToExcel($filename, $tileArray=[], $dataArray=[]){ ini_set('memory_limit','512M ...
- 【后缀数组】【LuoguP2408】 不同子串个数
题目链接 题目描述 给你一个长为N的字符串,求不同的子串的个数 我们定义两个子串不同,当且仅当有这两个子串长度不一样 或者长度一样且有任意一位不一样. 子串的定义:原字符串中连续的一段字符组成的字符串 ...
- SQL语句操作数据试题
1.在SQL Server中,下列关于数据完整性的说法错误的是(). (选择一项) A:实体完整性要求表中的每一行数据都反映不同的试题,不能存在相同的数据行 B:域完整性是只给定列的输入有效性 C:在 ...
- 【DataStage】使用Sequence Job报错:CopyOfseq_ld..JobControl (fatal error from @Coordinator): Sequence job (restartable) will abort due to previous unrecoverable errors
错误描述: 在使用Sequence Job加载作业的时候,报了个错,详细错误内容如下: 出现这个错误的原因是由于以下配置问题,Excution action的状态为Run造成. 解决方案: 将Excu ...
- python ocr图片中汉字识别
import os os.chdir("C:\Program Files (x86)\Tesseract-OCR") main = "Tesseract.exe d:/t ...
- Tomcat Response encode
Character Encoding - Apache Tomcat - Apache Software Foundation https://cwiki.apache.org/confluence/ ...
- linux进程守护脚本
为了防止进程异常挂掉,为了避免影响业务,编写一个守护进程,定时检查某个进程是否存在,如果不存在则自动启动该进程.编写脚本文件daemon.sh文件 while true; do server=`ps ...
- python2中的unicode()函数在python3中会报错:
python2中的unicode()函数在python3中会报错:NameError: name 'unicode' is not defined There is no such name in P ...
- Nginx记录-Proxy_pass多个应用配置(转载)
1. 在http节点下,加入upstream节点. upstream linuxidc { server 10.0.6.108:7080; server 10.0.0.85:8 ...