如何在Python中获取子属性值

0 投票
1 回答
1028 浏览
提问于 2025-04-17 21:36

我有一个这样的xml文件。

<approved-by approved="yes">
<person>
<name>XXX/name><signature>XXXXX</signature>
<location>XX</location><company>XXX</company><department>XX</department>
</person>
</approved-by>
<revision-history suppress="yes">
<rev-info>
<rev>PA1</rev>
<date><y>2013</y><m>01</m><d>22</d></date>

我需要从所有的xml文件中提取'rev'的值,还有'approved'的值。我想知道这个文档是否被批准。

from xml.dom.minidom import parse, parseString
import os
import sys
def shahul(dir):   
  for r,d,f in os.walk(dir):
     for files in f:
        if files.endswith(".xml"):
            dom=parse(os.path.join(r, files))
            name = dom.getElementsByTagName('rev')
            title = dom.getElementsByTagName('title')
            approved=dom.getAttribute('approved')
            print (files, title[0].firstChild.nodeValue,name[0].firstChild.nodeValue, approved, sep='\t')
shahul("location")

我能获取'rev'下面的值,但我无法获取'approved-by'这个属性的值。我知道我的语法不对,导致无法获取approved的值,但我不知道该怎么改。

我需要的输出是这样的。

文件名, 标题, PA1, 是

请指导我一下。

1 个回答

3

假设你的XML文件里只有一个approved-by标签:

要进行的更改是:

approved = dom.getAttribute('approved')

改成:

approved_by = dom.getElementsByTagName('approved-by')
approved = approved_by[0].attributes['approved'].value

撰写回答