Python XML解析问题

| 我有一个看起来像这样的xml文件:
<!DOCTYPE ROOT SYSTEM \"zombie.dtd\">
<ROOT>
    <row>
      <field name=\"buildid\">26960</field>
      <field name=\"cast(status as char)\">Filesystem           1K-blocks      Used Available Use% Mounted on
C:cygwinin        285217976  88055920 197162056  31% /usr/bin
C:cygwinlib        285217976  88055920 197162056  31% /usr/lib
C:cygwin            285217976  88055920 197162056  31% /
c:                   285217976  88055920 197162056  31% /cygdrive/c
d:                   285217976  88055920 197162056  31% /cygdrive/d</field>
      <field name=\"eventtime\">2011-05-25 16:26:09</field>
      <field name=\"schedulerid\">13</field>
    </row>
并且我试图解析各个字段(buildid,status,eventtime等),但是由于所有函数调用我都没有得到任何结果,这就是我正在做的事情:
log(\"Parsing XML file...\")
try:
    xml = ET.parse(xml_file)
except Exception, inst:
    print \"Unexpected error opening %s: %s\" % (file, inst)
    sys.exit(1)
log(\"Parsing Complete\")

#store the root of the element tree
root = xml.getroot()

zombies = []
for zombie in root.findall(\'row/\'):
    #read the zombie data
    buildID     = zombie.get(\'buildid\')
    print buildID
    status      = zombie.get(\'cast(status as char\')
    print status
    eventTime   = zombie.get(\'eventtime\')
    print eventTime
    schedulerID = zombie.get(\'schedulerid\')
    print schedulerID

    #create a zombie object
    #z = Zombie(buildID, status, eventTime, schedulerID)
    #zombies.append(z)
有人可以告诉我我在做什么错吗? 谢谢     
已邀请:
        您的
zombie
<row>
元素,而不是所需的
<field>
元素。当您在其上调用
get()
时,您试图在
<row>
元素上获得一个属性,但是您想要的是具有该ID的
<field>
元素的节点值。 如果您拥有Python 2.7,则可以使用ElementTree的部分XPath支持来查找正确的元素:
build_id = zombie.find(\'field[name=\"buildid\"]\').text
    
        您应该获得僵尸的
text
属性,而不要使用其
get()
方法。这将为您提供de
<field>
标记内的内容。 另外,如果您使用的是ElementTree,请看一下
lxml
模块,它通常比ET更好,并且完全支持XPath 1.0表达式(可用于按名称轻松查找元素)。     

要回复问题请先登录注册