2016-12-11 20 views
1

私は私が...質問のこのタイプは前に頼まれましたが、私は答えを自分で見つけるために、単語の右のセットを取得するように見えることができない特定のpython

をタグ名からXMLテキストのコンテンツを検索しますたとえば、XMLファイルがあります。

<document> 
    <page> 
     <title>title1</title> 
     <id>1</id> 
     <text>this is text1</text> 
    </page> 
    <page> 
     <title>title2</title> 
     <id>2</id> 
     <text>this is text2</text> 
    </page> 
    <page> 
     <title>title3</title> 
     <id>3</id> 
     <comment>random comment</comment> 
     <text>this is text3</text> 
    </page> 
</document> 

タグ内の各値を配列に格納する方法を見つけようとしています。

私はもともと、以下のコードですべてを印刷しようとしましたが、インデックス付けを中止するランダムなタグがある時点までしか機能しませんでした。だから、簡単にタグからテキストを取得する方法はありますか?または、配列のインデックスを知る必要が絶対にありますか?

import xml.etree.ElementTree as ET 
tree = ET.parse('./xml_file.xml') 
root = tree.getroot() 

for child in root: 
    print(child[2].text) 

これはよくある質問ですが、私は本当に答えをオンラインで把握できませんでした。

答えて

1

あなたが特定のキーを取得するために探しているようなあなたの質問から、それが聞こえるので、あなたがその名前のXMLキーの内容を取得するための簡単な使用find(<key_name>).text

import xml.etree.ElementTree as ET 
tree = ET.parse('./all_foods.xml') 
root = tree.getroot() 
for x in root: 
    print x.find("title").text 

>>> 
    title1 
    title2 
    title3 
+0

使用することができますが、これは私を与えている「はTypeError: 『ElementTreeの』オブジェクトが反復可能ではありません」 にもかかわらず、私はこの検索機能を調べるのに役立ちます。その間、私はnick_gabpeから別の答えを得ました。私はしかし、これを感謝し、より多くのことを学ぶために常に素晴らしいです。 – Ronan

+0

申し訳ありません、 'for x in tree'ではなく' for x in tree 'です。それを変更すると動作します。 – yampelo

+0

Super、非常にうまく動作し、私が望むテキストフォーマットを保持します。本当にありがとう! – Ronan

1
import xml.etree.ElementTree as ET 
tree = ET.parse('./all_foods.xml') 
my_text = [item.text for item in tree.iter()] 

これは与えることができますあなたが望むテキストのリスト。あなたには、いくつかの特定のテキストをしたい場合、あなたは、なぜ私はよく分からない

my_tags = [item.text for item in tree.iter() if item.text == "title1"] 
+0

ありがとう、これは私が探していたものです! – Ronan

関連する問題

 関連する問題