Python XML解析问题

2024-05-13 17:17:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下所示的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等),但由于所有函数调用的结果,我没有得到任何结果,我正在做的是:

^{pr2}$

有人能告诉我我做错了什么吗?在

谢谢


Tags: 文件namefieldusrstatusrootxmlsystem
2条回答

您应该得到zombie的text属性,而不是使用它的get()方法。这将为您提供de<field>标记中的内容。在

另外,如果您使用的是ElementTree,请看一下lxml模块,它通常比ET更好,并且完全支持XPath 1.0表达式(您可以使用它很容易地根据元素的名称查找元素)。在

您的zombie是一个<row>元素,而不是您想要的<field>元素。当您对其调用get()时,您试图获取<row>元素的属性,但是您需要的是具有该id的<field>元素的节点值

如果您有Python 2.7,则可以使用ElementTree的部分XPath支持来找到正确的元素:

build_id = zombie.find('field[name="buildid"]').text

相关问题 更多 >