Chinaunix

标题: dom 模块读取XML文件 [打印本页]

作者: ws00310976    时间: 2014-11-09 23:10
标题: dom 模块读取XML文件
#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

from xml.dom.minidom import parse
import xml.dom.minidom

# 使用minidom解析器打开 XML 文档
DOMTree = xml.dom.minidom.parse("user.xml")
collection = DOMTree.documentElement
if collection.hasAttribute("a"):
   print "Root element : %s" % collection.getAttribute("a")

movies = collection.getElementsByTagName("user")

for movie in movies:
   print "*****Movie*****"
   if movie.hasAttribute("id"):
      print "Title: %s" % movie.getAttribute("id")

   type = movie.getElementsByTagName('username')[0]
   print "Type: %s" % type.childNodes[0].data
   format = movie.getElementsByTagName('email')[0]
   print "Format: %s" % format.childNodes[0].data
   rating = movie.getElementsByTagName('age')[0]
   print "Rating: %s" % rating.childNodes[0].data
   description = movie.getElementsByTagName('sex')[0]
   print "Description: %s" % description.childNodes[0].data.encode('gbk')


xml:
<<xml version="1.0" encoding="gbk" <>
<users a="1">
    <user id="1000001">
        <username>Admin</username>
        <email>admin@live.cn</email>
        <age>23</age>
        <sex>闂</sex>
    </user>
    <user id="1000002">
        <username>Admin2</username>
        <email>admin2@live.cn</email>
        <age>22</age>
        <sex>闂</sex>
    </user>
    <user id="1000003">
        <username>Admin3</username>
        <email>admin3@live.cn</email>
        <age>27</age>
        <sex>闂</sex>
    </user>
    <user id="1000004">
        <username>Admin4</username>
        <email>admin4@live.cn</email>
        <age>25</age>
        <sex>婵</sex>
    </user>
    <user id="1000005">
        <username>Admin5</username>
        <email>admin5@live.cn</email>
        <age>20</age>
        <sex>1/sex>
    </user>
    <user id="1000006">
        <username>Admin6</username>
        <email>admin6@live.cn</email>
        <age>23</age>
        <sex>1/sex>
    </user>
</users>


运行报错:
Traceback (most recent call last):
  File "G:\pydev\b.py", line 10, in <module>
    DOMTree = xml.dom.minidom.parse("user.xml")
  File "C:\Python27\lib\xml\dom\minidom.py", line 1918, in parse
    return expatbuilder.parse(file)
  File "C:\Python27\lib\xml\dom\expatbuilder.py", line 924, in parse
    result = builder.parseFile(fp)
  File "C:\Python27\lib\xml\dom\expatbuilder.py", line 207, in parseFile
    parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 1, column 2

作者: Linux_manne    时间: 2014-11-10 09:56
本帖最后由 Linux_manne 于 2014-11-10 09:57 编辑

not well-formed   
是不是xml格式有问题?貌似xml 要改成utf8的编码




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2