É possível acessar o conteúdo de um objeto XML usando sintaxe de ponto?

votos
2

Olá Eu estou usando LibXML para analisar um feed rss e eu estou querendo saber se é possível acessar o conteúdo dentro usando a sintaxe ponto (ou apenas como fácil).

Então, se eu tenho:

<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>

Eu poderia acessá-lo como

text = post.text
Publicado 19/05/2009 em 17:51
fonte usuário
Em outras línguas...                            


2 respostas

votos
3

Não. A maneira mais simples é usar XPath . Por exemplo, para obter uma lista de todos os 'texto' nós que são filhos de um nó 'post':

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

Ou para obter o primeiro (e neste caso apenas) como nó:

doc = parser.parse
text_node = doc.find_first('/post/text') #returns first child only
Respondeu 19/05/2009 em 18:17
fonte usuário

votos
1

Se você está preparado para fazer um pouco de trabalho de configuração, então você pode encontrar HappyMapper útil.

Você declarar uma classe e seu mapeamento (ou as partes em que você está interessado, pelo menos) - no seu caso seria provavelmente algo parecido com isto

class Post
  include HappyMapper
  element :text, String
end

e usá-lo algo como isto:

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

Todos completamente testado, estou com medo ...

Respondeu 19/05/2009 em 20:23
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more