私は次のような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」という名前の2番目の子に降りて、「Z」という名前のすべての子を取得し、属性を持つよりも子だけを保持することです。 「name」を「bacon」に設定し、残りのノードごとに「W」という名前のすべての子を調べ、A、B、Cという名前のWの唯一の子を調べるフィルターに基づいてサブセットのみを保持します。次の(最適化されていない)擬似コードでそれらを処理する必要があります。
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で迷子になっているので、助けてください。ご不明な点がございましたら、お気軽にお問い合わせください。