2009-05-19 6 views
2

こんにちは私はLibXMLを使ってRSSフィードを解析していますが、ドットシンタックスを使用してコンテンツにアクセスすることが可能かどうかは疑問です。私が持っている場合ドット構文を使用してxmlオブジェクトのコンテンツにアクセスできますか?

だから:

<post> 
    <created_at>Sat Aug 09 05:38:12 +0000 2008</created_at> 
    <id>882281424</id> 
    <text>I so just thought the guy lighting the Olympic torch was falling when he began to run on the wall. Wow that would have been catastrophic.</text> 
    <source>web</source> 
    <truncated>false</truncated> 
    <in_reply_to_status_id></in_reply_to_status_id> 
    <in_reply_to_user_id></in_reply_to_user_id> 
</post> 

は、私が最も簡単な方法は、XPathを使用することです

text = post.text 

答えて

3

号と同じようにアクセスすることができました。

doc = parser.parse 
text_node = doc.find('/post/text') #returns all children 

それとも最初の(この場合のみ)、このようなノードを取得する:たとえば、「ポスト」ノードの子であるすべての「テキスト」ノードのlistを取得する

doc = parser.parse 
text_node = doc.find_first('/post/text') #returns first child only 
1

少しセットアップ作業をする準備ができていれば、HappyMapperが便利です。あなたは、クラスとそのマッピング(またはあなたが少なくとも興味を持っている部分)を宣言

- あなたのケースでは、それはおそらく、この

class Post 
    include HappyMapper 
    element :text, String 
end 

ようになりますし、それはこのように何かを使用します。

posts = Post.parse(File.read(path_to_rss.xml)) 
posts.each do |post| 
    puts post.text 
end 

すべて完全にテストされていない、私は怖い...

+0

はこれをテストし、それが(固定タイプミスで)正常に動作します。 XMLに ' ...'しか含まれていない場合は、ループする必要はありません。単に 'puts posts.text'を実行してください。 – dbr

関連する問題