1. 程式人生 > >【python】處理xml文件——dom

【python】處理xml文件——dom

enc print dom tel rst 對象類型 nts www. odi

參考

【1】【2】【3】


【嘗試】

【參考第【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  #顯示標簽對之間的數據


待補充

【python】處理xml文件——dom