我试图用 lxml 库来完成这样的事情: http ://www.xml.com/pub/a/2005/01/19/amara.html
from amara import binderytools
container = binderytools.bind_file('labels.xml')
for l in container.labels.label:
print l.name, 'of', l.address.city
但我最难弄湿了!我想要做的是:下降到名为“X”的根节点,然后下降到名为“Y”的第二个子节点,然后抓住它的所有子节点“命名 Z”,然后只保留那些没有属性的子节点'name' 设置为 'bacon',然后对于每个剩余节点查看其所有名为 'W' 的子节点,并仅保留基于某个过滤器的子集,该子集查看 W 的唯一子节点 A、B 和 C。然后我需要使用以下(非优化)伪代码处理它们:
result = []
X = root(doc(parse(xml_file_name)))
Y = X[1] # Second child
Zs = Y.children()
for Z in Zs:
if Z.name != 'bacon': continue # skip
Ws = Z.children()
record = []
assert(len(Ws) == 9)
W0 = Ws[0]
assert(W0.A == '42')
record.append(str(W0.A) + " " + W0.B + " " + W0.C))
...
W1 = Ws[1]
assert(W1.A == '256')
...
result.append(record)
这就是我想要完成的事情。在我尝试让这段代码更干净之前,我想让它工作。
请帮忙,因为我迷失在这个 API 中。如果您有任何问题,请告诉我。