2015-09-10 3 views
0

У меня есть XML-файл в этом формате:Выберите конкретный атрибут на основе атрибутов дорожат

<league country="argentina" name="Argentina: Torneo Federal A - Winners Stage" cup="False" id="2909" sub_id="29094"> 
    <match alternate_id="4187269" alternate_id_2="4394549" date="14.08.2015" id="4304775" static_id="14081523515562337775" status="FT" time="18:00"> 
    <home goals="2" id="2351556" name="Club Atletico Mitre"></home> 
    <away goals="1" id="2337775" name="Chaco For Ever"></away> 
    <events> 
    <event assist="" assistid="" id="22958994" minute="32" player="Juan Pablo Villafane" playerid="" result="[1 - 0]" team="home" type="goal"></event> 
    <event assist="" assistid="" id="22958995" minute="48" player="Aldo Visconti" playerid="" result="[1 - 1]" team="away" type="goal"></event> 
    <event assist="" assistid="" id="22958996" minute="90" player="Emanuel Lazzarini" playerid="" result="[2 - 1]" team="home" type="goal"></event> 
    </events> 
    <ht score="[1-0]"></ht> 
    <ft score="[2-1]"></ft> 
    </match></league><league country="argentina" name="Argentina: Torneo Federal A - Losers Stage" cup="False" id="2909" sub_id="29095"><match alternate_id="4178253" alternate_id_2="4410516" date="14.08.2015" id="4295774" static_id="14081523557572337894" status="FT" time="18:00"> 
    <home goals="2" id="2355757" name="Velez de San Ramon"></home> 
    <away goals="1" id="2337894" name="Sportivo Patria"></away> 
    <events> 
    <event assist="" assistid="" id="23118664" minute="11" player="Diego Suarez" playerid="" result="[1 - 0]" team="home" type="goal"></event> 
    <event assist="" assistid="" id="23118665" minute="64" player="Luis Leguizamon" playerid="" result="[2 - 0]" team="home" type="goal"></event> 
    <event assist="" assistid="" id="23118666" minute="67" player="Rodrigo Ramirez (o.g.)" playerid="" result="[2 - 1]" team="away" type="goal"></event> 
    </events> 
    <ht score="[1-0]"></ht> 
    <ft score="[2-1]"></ft> 

Это мой контроллер:

xml = Nokogiri::XML(f) 

    path = "//match[@static_id='user.matchid']" 
    @country = xml.xpath(path) 

Как я могу получить имя команды, на основании при условии, что значение атрибута "result" = [1-0] или [0-1]?

+0

Добро пожаловать для переполнения стека. Когда вы поставляете данные или код, уменьшите его до минимума, необходимого для отображения проблемы, с которой вы столкнулись. Другими словами, ваш XML чрезвычайно подробен и нуждается в сокращении. Это также неверно. Хотя Nokogiri _can_ исправить это, это приводит к XML, который часто не точно отражает оригинал. Неспособность предоставить точные входные данные, которые отражают истинную информацию, замедляет или останавливает нашу способность помочь вам, поэтому помогите нам помочь вам и предоставить точные, минимальные данные. –

ответ

0

Я хотел бы сделать что-то вроде:

require 'nokogiri' 

doc = Nokogiri::XML(<<EOT) 
    <xml> 
    <league> 
     <match> 
     <events> 
      <event player="Juan Pablo Villafane" result="[1 - 0]" team="home"></event> 
      <event player="Aldo Visconti" result="[1 - 1]" team="away"></event> 
     </events> 
     <events> 
      <event player="Diego Suarez" result="[1 - 0]" team="home"></event> 
      <event player="Luis Leguizamon" result="[2 - 0]" team="home"></event> 
     </events> 
     </match> 
    </league> 
    </xml> 
EOT 

doc.search('//event[contains(@result, "[1 - 0]") or contains(@result, "[0 - 1]")]/@team').map(&:text) 
# => ["home", "home"] 
0

Не указано четко, что необходимо для проверки точно. Итак, вот пример условие для контекста, предположим, что вы хотите получить имя домашней команды в матче, где окончательный счет времени "[2-1]":

//match[ft/@score = '[2-1]']/home/@name 
Смежные вопросы