2016-05-11 8 views
0

私はs3バケットにアクセスするためにurllib2ライブラリを使用しています。私はxml構造体を返す。問題は、そのキーが "part-"で始まる構造体のノードを探したい場合です。xml応答内の特定の文字列を検索する方法

リスト/配列にそれらを抽出して保存してから、後でそれらのファイルの内容を読み込みたいXML応答の

一部は

<Contents> 
<Key>output/part-00000</Key> 
<LastModified>2016-05-11T17:01:19.000Z</LastModified> 
<ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag> 
<Size>0</Size> 
<StorageClass>STANDARD</StorageClass> 
</Contents> 
<Contents> 
<Key>output/part-00001</Key> 
<LastModified>2016-05-11T17:01:15.000Z</LastModified> 
<ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag> 
<Size>0</Size> 
<StorageClass>STANDARD</StorageClass> 
</Contents> 

今私は、次の

import xml.etree.ElementTree as ET 

f = urllib2.urlopen("https://s3.amazonaws.com/*******") 

tree = ET.parse(f) 
root = tree.getroot() 

for child in root: 
    print child 

出力

をしています
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Name' at 0x103a325d0> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Prefix' at 0x103a32610> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Marker' at 0x103a32690> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}MaxKeys' at 0x103a32710> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}IsTruncated' at 0x103a32750> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a32790> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a32950> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a32b10> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a32cd0> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a32e90> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a3e090> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a3e250> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a3e410> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a3e5d0> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a3e790> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a3e950> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a3eb10> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a3ecd0> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a3ee90> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a47090> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a47250> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a47410> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a475d0> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a47790> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a47950> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a47b10> 
<Element '{http://s3.amazonaws.com/doc/2006-03-01/}Contents' at 0x103a47cd0> 

私はminidomとxml.etree.ElementTreeを使用してさまざまなソリューションを試しましたが、私はそれを正しく取得できません。

だから私は、これらのXMLノードをループして、part - *****のすべての参照を見つけ、それらを配列に保存します。

任意のヘルプ/手がかりは/

+0

ポストにあなたが試した、何が間違っていたと我々はそれを修正するコードを歓迎されています。 –

+0

@AlexHallねえ、コンソール出力と一緒に上記と一緒に試したことを確認できます。 –

+0

これはスタートです。すべてのノードがあります。 "問題は、そのキーが" part - ""で始まるその構造内のノードを探したいと思うことです。 –

答えて

0

私の解決策

f = urllib2.urlopen("https://s3.amazonaws.com/******") 

tree = ET.parse(f) 
root = tree.getroot() 

for child in root.findall('{http://s3.amazonaws.com/doc/2006-03-01/}Contents'): 
    for key in child.findall("{http://s3.amazonaws.com/doc/2006-03-01/}Key"): 
     print key.text 
関連する問題