参考
【尝试】
【参考第【3】个博客】
【原版代码】
#
coding=utf-8
#
通过minidom解析xml文件
import
xml.dom.minidom as xmldom
import
os
‘‘‘
XML文件读取
<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd=‘123456‘>dasdas
<caption>Python</caption>
<item id="4">
<caption>测试</caption>
</item>
</login>
<item id="2">
<caption>Zope</caption>
</item>
</catalog>
‘‘‘
xmlfilepath = os.path.abspath("test.xml")
print ("xml文件路径:", xmlfilepath)
# 得到文档对象
domobj = xmldom.parse(xmlfilepath)
print("xmldom.parse:", type(domobj))
# 得到元素对象
elementobj = domobj.documentElement
print ("domobj.documentElement:", type(elementobj))
#获得子标签
subElementObj = elementobj.getElementsByTagName("login")
print ("getElementsByTagName:", type(subElementObj))
print (len(subElementObj))
# 获得标签属性值print (subElementObj[0].getAttribute("username"))
print (subElementObj[0].getAttribute("passwd"))
#区分相同标签名的标签
subElementObj1 = elementobj.getElementsByTagName("caption")
for i in range(len(subElementObj1)):
print ("subElementObj1[i]:", type(subElementObj1[i]))
print (subElementObj1[i].firstChild.data) #显示标签对之间的数据
报错了,貌似是因为我的python版本低的缘故?两个问题:
(1)一个是print那里的括号问题。
(2)一个是type()函数取得对象类型名时,都只显示<type ‘instance‘>而不是更为具体详细的类型名。
所以,改动一下。
【改动后】
#
coding=utf-8
#
通过minidom解析xml文件
import
xml.dom.minidom as xmldom
import
os
‘‘‘
XML文件读取
<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd=‘123456‘>dasdas
<caption>Python</caption>
<item id="4">
<caption>测试</caption>
</item>
</login>
<item id="2">
<caption>Zope</caption>
</item>
</catalog>
‘‘‘
xmlfilepath = os.path.abspath("test_g2.xml")
print"xml文件路径:", xmlfilepath
# 得到文档对象
domobj = xmldom.parse(xmlfilepath)
print"xmldom.parse:", type(domobj)
print"xmldom.parse:", domobj.__class__# 得到元素对象
elementobj = domobj.documentElement
print"domobj.documentElement:", type(elementobj)
print"domobj.documentElement:", elementobj.__class__#获得子标签
subElementObj = elementobj.getElementsByTagName("login")
print"getElementsByTagName:", type(subElementObj)
print len(subElementObj)
# 获得标签属性值print subElementObj[0].getAttribute("username")
print subElementObj[0].getAttribute("passwd")
#区分相同标签名的标签
subElementObj1 = elementobj.getElementsByTagName("caption")
for i in range(len(subElementObj1)):
print"subElementObj1[i]:", type(subElementObj1[i])
print subElementObj1[i].firstChild.data #显示标签对之间的数据
待补充
原文:https://www.cnblogs.com/anno-ymy/p/10524610.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!