2010-10-26 7 views
0

У меня есть этот XML-документ, и я хочу найти конкретный GitHubCommiter, используя REXML. Хой, я это делаю?Анализ XML с REXML

<users> 
<GitHubCommiter id="Nerian"> 
    <username>name</username> 
    <password>12345</password> 
</GitHubCommiter> 

<GitHubCommiter id="xmawet"> 
    <username>name</username> 
    <password>12345</password> 
</GitHubCommiter> 

<GitHubCommiter id="JulienChristophe"> 
    <username>name</username> 
    <password>12345</password> 
    </GitHubCommiter> 
</users> 

Я попытался:

log = REXML::Document.new(file)              
root = log.root                   username = root.elements["GitHubCommiter['#{github_user_name}']"].elements['username'].text  
password =  root.elements["GitHubCommiter['#{github_user_name}']"].elements['password'].text 
root.elements["GitHubCommiter['id'=>'#{github_user_name}']"].text 

Но я не найти способ сделать это. Есть идеи?

ответ

1

docs say for elements (курсив мой):

[](index, name=nil) Извлекает дочерний элемент. Фильтры только Дети элемента, независимо от соответствия XPath.

index: параметр поиска. Это либо целое число, которое будет использоваться для поиска элемента index'th child Element, или XPath, который будет использоваться для поиска элемента.

Так это должно быть XPath:

root.elements["./GitHubCommiter[@id = '{github_user_name}']"] 

и т.д.

+0

Вот так! Спасибо! – Nerian

+0

@Nerian: Добро пожаловать. ;-) – Tomalak