REXML - Как извлечь один элемент - PullRequest
3 голосов
/ 08 сентября 2011

Я пишу некоторые приемочные тесты в ruby, которые включают подтверждение наличия значений в XML-ответе.

Мой XML выглядит следующим образом:

<?xml version="1.0"?>
<file xmlns:dvi=xxxxx>
    <name>whatever</name>
</file>

Существуют и другие атрибуты, кромевыше должно проиллюстрировать мою точку зрения.Вот мой код ruby:

xml = <the xml above>
xmlDoc = REXML::Document.new(xml)
puts xmlDoc.elements().to_a('file/name')

Это распечатывает <name>whatever</name>, но я хочу, чтобы он просто распечатал whatever

В этом XML будет только один элемент name.Мне удалось распечатать только текст, который я хочу, используя elements.each, но это кажется излишним.

Спасибо, Адриан

1 Ответ

4 голосов
/ 08 сентября 2011

Попробуйте

xmlDoc.elements().to_a('file/name').first.text

и затем добавьте некоторую обработку ошибок (это не надежно).

to_a возвращает массив элементов REXML.С first вы получаете первый (и предположительно единственный) элемент.С text вы получаете доступ к этим элементам текстового содержимого.

...