本文目录一览:
- 1、请问用python怎么修改xml的节点值?
- 2、怎样在python中更新xml文件?
- 3、如何正确的用python修改AndroidManifest.xml(史上最详细教程)
- 4、用python怎么操作xml文件内容
- 5、python 怎么修改xml文件内容
请问用python怎么修改xml的节点值?
from xml.etree import ElementTree
filePath = 'd:\\aaa.xml'
xmldoc = ElementTree.parse(filePath)
node = xmldoc.find('./string')
node.text = "win 7"
其实说实话,楼上的回答已经很清楚了.
不管什么编程语言,要想学好,基础一定要扎实.
怎样在python中更新xml文件?
其实有两种解析方式:
SAX(基于事件的解析方法,部分载入)
DOM(全部载入,内存消耗太多,改进方法:载入子树,延迟读)
python中可用,elementtree, minidom都是可以的
如何正确的用python修改AndroidManifest.xml(史上最详细教程)
AndroidManifest.xml这个文件如果你搞过android相关的东西(如果没搞过,我希望你去搞一下), 你一定很熟悉. 我们在工作可能会有一些动态修改或者获取manifest里面的值的情况, 那么今天涛哥就带你研究一下.
我们来看一下root.attrib的输出:
在versionName和versionCode前面的是什么? 没错, 就是我们上面配置的SPACE,所以如果我们要想正确的获取到值,别忘了加上.
通过上面我们可以看到, versionName和versionCode都是属于manifest根目录的成员
因为权限属性(uses-permission)在manifest一级子属性
因为activity不是manifest的一级子属性, 而是application的子属性
meta和service因为跟acitity是同级的, 所以处理方法一样, 我就不赘述了
其实如果你搞明白了,manifest的本质是xml, 然后知道如何用python操作xml, 那么这个问题就变得很简单
用python怎么操作xml文件内容
一、什么是xml?
xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
abc.xml
复制代码代码如下:
?xml version="1.0" encoding="utf-8"?
catalog
maxid4/maxid
login username="pytest" passwd='123456'
captionPython/caption
item id="4"
caption测试/caption
/item
/login
item id="2"
captionZope/caption
/item
/catalog
Ok ,从结构上,它很像我们常见的HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传输和存储数据,其焦点是数据的内容。
那么它有如下特征:
首先,它是有标签对组成,aa/aa
标签可以有属性:aa id='123'/aa
标签对可以嵌入数据:aaabc/aa
标签可以嵌入子标签(具有层级关系):
二、获得标签属性
那么,下面来介绍如何用python来读取这种类型的文件。
复制代码代码如下:
#coding=utf-8
import xml.dom.minidom
#打开xml文档
dom = xml.dom.minidom.parse('abc.xml')
#得到文档元素对象
root = dom.documentElement
print root.nodeName
print root.nodeValue
print root.nodeType
print root.ELEMENT_NODE
mxl.dom.minidom 模块被用来处理xml文件,所以要先引入。
xml.dom.minidom.parse() 用于打开一个xml文件,并将这个文件对象dom变量。
documentElement 用于得到dom对象的文档元素,并把获得的对象给root
每一个结点都有它的nodeName,nodeValue,nodeType属性。
nodeName为结点名字。
nodeValue是结点的值,只对文本结点有效。
nodeType是结点的类型。catalog是ELEMENT_NODE类型
现在有以下几种:
'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'
三、获得子标签
现在要获得catalog的子标签以的标签name
复制代码代码如下:
?xml version="1.0" encoding="utf-8"?
catalog
maxid4/maxid
login username="pytest" passwd='123456'
captionPython/caption
item id="4"
caption测试/caption
/item
/login
item id="2"
captionZope/caption
/item
/catalog
对于知道元素名字的子元素,可以使用getElementsByTagName方法获取:
复制代码代码如下:
#coding=utf-8
import xml.dom.minidom
#打开xml文档
dom = xml.dom.minidom.parse('abc.xml')
#得到文档元素对象
root = dom.documentElement
bb = root.getElementsByTagName('maxid')
b= bb[0]
print b.nodeName
bb = root.getElementsByTagName('login')
b= bb[0]
print b.nodeName
如何区分相同标签名字的标签:
复制代码代码如下:
?xml version="1.0" encoding="utf-8"?
catalog
maxid4/maxid
login username="pytest" passwd='123456'
captionPython/caption
item id="4"
caption测试/caption
/item
/login
item id="2"
captionZope/caption
/item
/catalog
caption和item标签不止一个如何区分?
复制代码代码如下:
#coding=utf-8
import xml.dom.minidom
#打开xml文档
dom = xml.dom.minidom.parse('abc.xml')
#得到文档元素对象
root = dom.documentElement
bb = root.getElementsByTagName('caption')
b= bb[2]
print b.nodeName
bb = root.getElementsByTagName('item')
b= bb[1]
print b.nodeName
root.getElementsByTagName('caption') 获得的是标签为caption 一组标签,b[0]表示一组标签中的第一个;b[2] ,表示这一组标签中的第三个。
四、获得标签属性值
复制代码代码如下:
?xml version="1.0" encoding="utf-8"?
catalog
maxid4/maxid
login username="pytest" passwd='123456'
captionPython/caption
item id="4"
caption测试/caption
/item
/login
item id="2"
captionZope/caption
/item
/catalog
login和item标签是有属性的,如何获得他们的属性?
复制代码代码如下:
#coding=utf-8
import xml.dom.minidom
#打开xml文档
dom = xml.dom.minidom.parse('abc.xml')
#得到文档元素对象
root = dom.documentElement
itemlist = root.getElementsByTagName('login')
item = itemlist[0]
un=item.getAttribute("username")
print un
pd=item.getAttribute("passwd")
print pd
ii = root.getElementsByTagName('item')
i1 = ii[0]
i=i1.getAttribute("id")
print i
i2 = ii[1]
i=i2.getAttribute("id")
print i
getAttribute方法可以获得元素的属性所对应的值。
五、获得标签对之间的数据
复制代码代码如下:
?xml version="1.0" encoding="utf-8"?
catalog
maxid4/maxid
login username="pytest" passwd='123456'
captionPython/caption
item id="4"
caption测试/caption
/item
/login
item id="2"
captionZope/caption
/item
/catalog
caption标签对之间是有数据的,如何获得这些数据?
获得标签对之间的数据有多种方法,
方法一:
复制代码代码如下:
#coding=utf-8
import xml.dom.minidom
#打开xml文档
dom = xml.dom.minidom.parse('abc.xml')
#得到文档元素对象
root = dom.documentElement
cc=dom.getElementsByTagName('caption')
c1=cc[0]
print c1.firstChild.data
c2=cc[1]
print c2.firstChild.data
c3=cc[2]
print c3.firstChild.data
firstChild 属性返回被选节点的第一个子节点,.data表示获取该节点人数据。
方法二:
复制代码代码如下:
#coding=utf-8
from xml.etree import ElementTree as ET
per=ET.parse('abc.xml')
p=per.findall('./login/item')
for oneper in p:
for child in oneper.getchildren():
print child.tag,':',child.text
p=per.findall('./item')
for oneper in p:
for child in oneper.getchildren():
print child.tag,':',child.text
方法二有点复杂,所引用模块也与前面的不一样,findall用于指定在哪一级标签下开始遍历。
getchildren方法按照文档顺序返回所有子标签。并输出标签名(child.tag)和标签的数据(child.text)
其实,方法二的作用不在于此,它核心功能是可以遍历某一级标签下的所有子标签。
python 怎么修改xml文件内容
类似于:
#!/usr/bin/evn python
#coding:utf-8
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
import sys
try:
tree = ET.parse("country.xml") #打开xml文档
#root = ET.fromstring(country_string) #从字符串传递xml
root = tree.getroot() #获得root节点
except Exception, e:
print "Error:cannot parse file:country.xml."
sys.exit(1)
print root.tag, "---", root.attrib
for child in root:
print child.tag, "---", child.attrib
print "*"*10
print root[0][1].text #通过下标访问
print root[0].tag, root[0].text
print "*"*10
for country in root.findall('country'): #找到root节点下的所有country节点
rank = country.find('rank').text #子节点下节点rank的值
name = country.get('name') #子节点下属性name的值
print name, rank
#修改xml文件
for country in root.findall('country'):
rank = int(country.find('rank').text)
if rank 50:
root.remove(country)
tree.write('output.xml')
给你推荐一篇文章看看吧: