2017-05-15 25 views
0

誰でもPythonを使ってXMLファイルから情報を抽出するのに役立つ人はいますか?これは私のXMLの例です。Pythonを使用してXMLファイルから情報を抽出しますか?

<root> 
    <number index="2"> 
     <info> 
      <info.RANDOM>Random Text</info.RANDOM> 
     </info> 
</root> 

私が印刷したいのは、ルートタグ間の情報です。しかし、私はすべてのタグ、タグ間のテキスト、およびタグ内のコンテンツ(この場合は数値インデックス= "2")をそのまま出力したいと思います。itertext()を試しましたが、タグを付けて、ルートタグの間にテキストのみを印刷します。これまでは、element.tagとelement.textのみを出力するが、タグ内の終了タグと内容は表示されないという暫定的な解決策があります。どんな助けもありがとう! :)

ご入力としてSが
+0

XMLデータの解析に関する以前の投稿を確認しましたか?以下は役に立ちます:http://stackoverflow.com/questions/1912434/how-do-i-parse-xml-in-python – Jon

答えて

1

s='''<root> 
     <number index="2"> 
     <info> 
      <info.RANDOM>Random Text</info.RANDOM> 
     </info> 
     </number> 
</root>''' 

は、タグ名numberを持つすべてのタグを検索し、使用して文字列にタグを変換するET.tostring()

import xml.etree.ElementTree as ET 
root = ET.fromstring(s) 
for node in root.findall('.//number'): 
    print ET.tostring(node) 

出力:

<number index="2"> 
     <info> 
      <info.RANDOM>Random Text</info.RANDOM> 
     </info> 
     </number> 
+0

ありがとうございました!私はそれが働くことを望んでいただけで動作します。しかし、 "ET.tostring(node、encoding =" unicode ")を追加して、すべての" \ n "を表示しないようにするだけでした。 :) –

0
from bs4 import BeautifulSoup 

xml = "<root><number index=\"2\"><info><info.RANDOM>Random Text</info.RANDOM></info></root>" 
soup = BeautifulSoup(xml, "xml") 

output = soup.prettify() 
print(output[output.find("<root>") + 7:output.rfind("</root>")])  

+ 7root>\nのアカウントです

関連する問題