#ruby #nokogiri
#ruby #nokogiri
Вопрос:
У меня есть несколько операторов, таких как:
<House name="test1">
<Room id="test2" name="test3" >
<test name="test4" param="test5">
<blah id="test6" name="test7">
</blah>
</test>
</Room>
</House>
Когда blah name
есть какое-то конкретное значение, например test7
, мне нужно соответствующее имя комнаты. Как мне этого добиться?
Ответ №1:
Я никогда не использовал Nokogiri, но я пытался, и это, кажется, работает:
xml_doc.css('blah[name="test7"]').first.ancestors("Room").first['name']
=> "test3"
Просто проверьте наличие nil
s.
2.3.1 :132 > xml_doc.css('blah[name="test7"]').map { |node| node.ancestors("Room").first['name'] }
=> ["test3"]
Комментарии:
1. Как вы сделали это в первой попытке, если вы не использовали nokogiri? Я попробую этот код.
2. Я прочитал документы и сделал несколько поисковых запросов в Google. И попробовал в irb.
3. Я хочу, чтобы весь вывод не был первым [‘name’]) как мне это сделать. Удаление first[‘name’] не работает.
4. «Мне нужно соответствующее имя комнаты». Что вам нужно? Весь XML-фрагмент элемента Room?
5. Нет, то, что вы написали, прекрасно, но я думаю, что мой вопрос был неясен. Если приведенные выше XML-инструкции повторяются несколько раз, мне нужны все имена комнат.