导航:首页 > 编程语言 > xmlpython

xmlpython

发布时间:2022-02-04 13:31:32

‘壹’ python 解析xml需要什么模块

Python的标准库中,提供了6种可以用于处理XML的包。

(1)xml.dom

xml.dom实现的是W3C制定的DOM API。如果你习惯于使用DOM API或者有人要求这这样做,可以使用这个包。不过要注意,在这个包中,还提供了几个不同的模块,各自的性能有所区别。

DOM解析器在任何处理开始之前,必须把基于XML文件生成的树状数据放在内存,所以DOM解析器的内存使用量完全根据输入资料的大小。

(2)xml.dom.minidom

xml.dom.minidom是DOM API的极简化实现,比完整版的DOM要简单的多,而且这个包也小的多。那些不熟悉DOM的朋友,应该考虑使用xml.etree.ElementTree模块。据lxml的作者评价,这个模块使用起来并不方便,效率也不高,而且还容易出现问题。

相关推荐:《Python教程》

(3)xml.dom.pulldom

与其他模块不同,xml.dom.pulldom模块提供的是一个“pull解析器”,其背后的基本概念指的是从XML流中pull事件,然后进行处理。虽然与SAX一样采用事件驱动模型(event-driven processing model),但是不同的是,使用pull解析器时,使用者需要明确地从XML流中pull事件,并对这些事件遍历处理,直到处理完成或者出现错误。

pull解析(pull parsing)是近来兴起的一种XML处理趋势。此前诸如SAX和DOM这些流行的XML解析框架,都是push-based,也就是说对解析工作的控制权,掌握在解析器的手中。

(4)xml.sax

xml.sax模块实现的是SAX API,这个模块牺牲了便捷性来换取速度和内存占用。SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准。它是事件驱动的,并不需要一次性读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。

(5)xml.parser.expat

xml.parser.expat提供了对C语言编写的expat解析器的一个直接的、底层API接口。expat接口与SAX类似,也是基于事件回调机制,但是这个接口并不是标准化的,只适用于expat库。

expat是一个面向流的解析器。您注册的解析器回调(或handler)功能,然后开始搜索它的文档。当解析器识别该文件的指定的位置,它会调用该部分相应的处理程序(如果您已经注册的一个)。该文件被输送到解析器,会被分割成多个片断,并分段装到内存中。因此expat可以解析那些巨大的文件。

(6)xml.etree.ElementTree(以下简称ET)

xml.etree.ElementTree模块提供了一个轻量级、Pythonic的API,同时还有一个高效的C语言实现,即xml.etree.cElementTree。与DOM相比,ET的速度更快,API使用更直接、方便。与SAX相比,ET.iterparse函数同样提供了按需解析的功能,不会一次性在内存中读入整个文档。ET的性能与SAX模块大致相仿,但是它的API更加高层次,用户使用起来更加便捷。

建议:在使用Python进行XML解析时,首选使用ET模块,除非你有其他特别的需求,可能需要另外的模块来满足。

‘贰’ 如何用python提取XML中的注释

from xml.etree import ElementTreestr_ = '' #文件中的xml字符串xml_obj = ElementTree.fromstring(str_)

然后通过对xml_obj进行操作,xml_obj本身也是一个xml节点。
xml_obj.getchildren() 获取根节点的子节点列表
xml_obj.findall(node_name) 搜索xml_obj节点下名为node_name的所有节点
xml_obj.tag 节点的标签
xml_obj.text 节点的文本信息 ,本例中可以获得K这个文本。
xml_obj.tail 节点尾部的文本信息,本例中获取Channel Regulator KCR1 Suppresses Heart Rhythm by Molating the Pacemaker Current I 就需要搜索到标签为sup的节点,然后取节点的tail文本获得。

‘叁’ python这样的xml配置文件如何读取

xml='''<?xmlversion="1.0"encoding="utf-8"?>
<Conf>
<DBconf>
<DB>
<Desc>abc</Desc>
<ConnStr>DB_192.168.3.1</ConnStr>
<UserName>system</UserName>
<PassWd>aa</PassWd>
</DB>
<DB>
<Desc>bb</Desc>
<ConnStr>ORA9i_192.168.3.1</ConnStr>
<UserName>system</UserName>
<PassWd>system</PassWd>
</DB>
<DB>
<Desc>ddd</Desc>
<ConnStr>ORA9i_192.168.3.1</ConnStr>
<UserName>system</UserName>
<PassWd>system</PassWd>
</DB>
</DBconf>
<Otherconf>
<a>aaa</a>
<c>aaa</c>
</Otherconf>
</Conf>
'''

fromxml.domimportminidom
defget_childern(node):
returnfilter(lambdan:isinstance(n,minidom.Element),node.childNodes)

doc=minidom.parseString(xml)
root=doc.childNodes[0]

DBconf,Otherconf=get_childern(root)

forDBinget_childern(DBconf):
forninget_childern(DB):
printn.tagName,n.firstChild.data

print

forninget_childern(Otherconf):
printn.tagName,n.firstChild.data

‘肆’ 如何用Python输出漂亮的xml文件

你的问题可以直接转化为python如何读取文件,使用这句代码:open('thefile.xml').read( ) 下面是例子: >>> open('D:\\Test.xml',encoding='utf8').read()不知道为什么,python3.4中读取文件的默认使用GBK,这一点要注意

‘伍’ python处理是Xml文件的,删除标签属性符合条件的!如<data name="test"id="

你可以使用 BeautifulSoup 套件:
安装:
pip install bs4

如果觉得 html 解析器不敷使用,参考文档安装其他适合的解析器。
如果想要详细了解 BeautifulSoup 也请参考官方文档(有中文版本)。
测试档:
以下是我使用的测试文件:
# delete.txt
126
147

# test.xml
<re>
<id>123</id>
<name>abc</name>
</re>
<re>
<id>126</id>
<name>abc</name>
</re>
<re>
<id>135</id>
<name>abc</name>
</re>
<re>
<id>147</id>
<name>abc</name>
</re>

代码:
from bs4 import BeautifulSoup

with open('test.xml') as reader:
xml = reader.read()

deleted_id = []

with open('delete.txt') as reader:
for line in reader:
line = line.strip()
deleted_id.append(line)

def has_delete_id(tag):
return tag.name=='re' and tag.id.string in deleted_id

soup = BeautifulSoup(xml, 'html.parser')

tags = soup(has_delete_id)
for tag in tags:
tag.decompose()

print(soup.prettify())

程式输出:
<re>
<id>
123
</id>
<name>
abc
</name>
</re>
<re>
<id>
135
</id>
<name>
abc
</name>
</re>

代码说明:
首先我们从 Beautiful Soup 的套件中汇入 BeautifulSoup 类
from bs4 import BeautifulSoup

接着分别从 delete.txt 和 test.xml 中读出要删除的 id 和主要的 xml 内容,下一步是实体化生成一个 BeautifulSoup对象 soup, 我们采用 html.parser 解析器去解析 xml:
soup = BeautifulSoup(xml, 'html.parser')

在此我们定义了一个用于过滤的 function has_delete_id,每一个在 xml 中的tag 只要是 <re> tag 且含有想要删除的 <id> tag 就会被检索出来:
def has_delete_id(tag):
return tag.name=='re' and tag.id.string in deleted_id

接着 soup(has_delete_id) 会帮助我们找到欲删除的 tag,接着走访搜索出来的这些 tag 并呼叫方法 decompose() 来从文件中删除该标签。
最后 soup.prettify()可以帮助我们输出修改后的文件。

‘陆’ python xml 查找关键字

可以这么写:
def find(html):
soup = BeautifulSoup(html.getResponse().content,from_encoding='gb18030')

for index in soup.find_all('ROWDATA'):

print index

html是你的网页域名

‘柒’ Python 怎么解析 xml字符串

1. 我上面这段xml代码,一开始没有注意看,在每一个元素的结尾元素中都含有转义符,这就是为什么我用xml解析插件时一直保报错的原因,因为他不是正规的xml格式。我的方法是用正则替换掉:re.sub(r'(<)\\(/.+?>)',r'\g<1>\g<2>',f_xml) 对于Python中的正则re的sub用法
2. 处理成正规的xml格式后,我这里还是用ElementTree来解析的,但在加载时又报错:
cElementTree.ParseError: XML or text declaration not at start of entity: line 2, column 0
这个错误我在网上没有找到合适的答案,不过根据字面意思来解决,就是在开头的地方有错误。这里我尝试这吧xml的文档声明给去掉了,居然没有报错。这里有些不理解为什么不能加? 我的方法:f_xml=test_xml.replace('<?xml version="1.0" encoding="gbk"?>','')
3. 然后再加载,就能获取到相应的节点了。

‘捌’ python-xml怎么安装啊

pip install lxml python2.7.9 自带pip安装工具。 看下面图片,图中显示本人电脑已经安装好了。
1.

直接

下载的模块文件中已经有了模块的文件,有些模块只有一个文件,比如较早版本的BeautifulSoup,有些是一个文件夹,比如新版本BeautifulSoup就是一个叫做bs4的文件夹。

把这些文件直接到你的python路径下的/Lib/site-packages文件夹中,比如C:/Python27/Lib/site-packages。之后就可以在程序里直接引用了:

import BeautifulSoup

或者

from bs4 import BeautifulSoup

这是根据你放置的文件位置不同而决定的。

网上有人说直接放在Lib文件夹中就可以了。的确这样也行,但Lib文件夹中都是自带的模块,看一下就会发现我们用过的random、re等模块的代码文件。而外部模块一般放在site-packages文件夹中。

2.

setup.py

很多模块里都附带了setup.py文件,有同学直接双击了,然后发现没有用。

它的使用方法是从命令行去到setup.py所在的路径下,运行

python setup.py install

仔细看一下安装时输出的信息可以发现,在线学习这个命令做的事情其实也就是帮你把模块的代码到site-packages文件夹。

3.

setuptools

使用setuptools可以直接根据模块名称来自动下载安装,不需要自己再去寻找模块的安装文件。不过在使用之前,你得先安装setuptools自身。

windows平台的32位python,可以直接下载setuptools的exe文件安装。

‘玖’ python 如何把xml文件转化成string

你说的不是xml文件吧,是xml对象转化成string吧。

你可以使用toxml()这个方法。

Node.toxml([encoding])
"""
.
Withnoargument,,andtheresultis

document.-8islikely
incorrect,sinceUTF-8isthedefaultencodingofXML.
Withanexplicitencoding[1]argument,theresultisabytestringinthe
specifiedencoding..To
,the
“utf-8”.
Changedinversion2.3:;seewritexml().
"""

如果解决了您的问题请采纳!
如果未解决请继续追问

‘拾’ python读取xml文件有哪些方法

引入XML组件:import xml.dom.minidom。
创建一个xml文件,<?xml version="1.0" encoding="utf-8"?>。
相关推荐:《Python教程》
加载读取XML文件,xml.dom.minidom.parse('abc.xml'),这是xml文件的对象。
获取XML文档对象,root = dom.documentElement。
获取标签之间的数据 ,rootdata.getElementsByTagName('caption')。
总结一下xml对象,node.getAttribute(AttributeName),获取XML节点属性值,node.getElementsByTagName(TagName),获取XML节点对象集合,等等具体的查看手册。

阅读全文

与xmlpython相关的资料

热点内容
为什么安卓机拍照那么丑 浏览:694
服务器绑定云产品实例 浏览:313
程序员认真工作被开除 浏览:453
程序员送苹果 浏览:143
小程序绘图源码 浏览:968
如何购买域名和服务器阿里云 浏览:671
服务器地址及端口在哪里 浏览:695
腾讯云服务器有危险吗 浏览:798
复制文件到文件夹php 浏览:10
java注释正则表达式 浏览:858
java连接远程oracle 浏览:91
javamainargs 浏览:759
金华数据文档加密软件公司 浏览:855
内心极度担心解压的音乐 浏览:897
穿搭技巧app卡色配什么颜色 浏览:595
程序员得结石 浏览:131
查公司薪资的app叫什么 浏览:412
压缩包多个文件夹图片连续看 浏览:487
linuxmysql无法用命令启动 浏览:442
地税身份认证用什么ApP 浏览:532