0

我在 XML 文件中有代码,我使用 et.parse 对其进行解析:

<VIAFCluster xmlns="http://viaf.org/viaf/terms#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:void="http://rdfs.org/ns/void#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
<viafID>15</viafID>
<nameType>Personal</nameType>
</VIAFCluster>
<mainHeadings>
    <data>
       <text>
          Gondrin de Pardaillan de Montespan, Louis-Antoine de, 1665-1736
       </text>
    </data>
</mainHeadings>

我想将其解析为:

[15,“个人”,“Gondrin 等”]

我似乎无法打印任何字符串信息:

import xml.etree.ElementTree as ET

tree = ET.parse('/Users/user/Documents/work/oneline.xml')
root = tree.getroot()

for node in tree.iter():
    name = node.find('nameType')
    print(name)

因为它显示为“无”......我做错了什么?

4

1 回答 1

1

我仍然不确定您到底想要做什么,但希望如果您运行下面的代码,它将帮助您顺利上路。使用 getiterator 函数遍历元素将让您了解发生了什么。当你来到他们身边时,你可以拿起你想要的东西:

import xml.etree.ElementTree as et
xml = '''
<VIAFCluster xmlns="http://viaf.org/viaf/terms#" 
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
             xmlns:void="http://rdfs.org/ns/void#" 
             xmlns:foaf="http://xmlns.com/foaf/0.1/">
    <viafID>15</viafID>
    <nameType>Personal</nameType>
    <mainHeadings>
        <data>
           <text>
              Gondrin de Pardaillan de Montespan, Louis-Antoine de, 1665-1736
           </text>
        </data>
    </mainHeadings>
</VIAFCluster>
'''
tree = et.fromstring(xml)
lst = []
for i in tree.getiterator():
    t = i.text.strip()
    if t:
        lst.append(t)
        print i.tag
        print t

你最终会得到一个你想要的列表。我不得不清理你的 xml,因为你有不止一个顶级元素,这是一个禁忌。也许这一直是你的问题。

祝你好运,迈克

于 2012-11-14T23:00:25.120 回答