Как использовать регулярное выражение для вставки текста между текстом? - PullRequest
1 голос
/ 16 января 2012

У меня уникальный сценарий. Существует веб-приложение, которое представляет собой симулятор для проверки отправки данных в XML и получения данных обратно в XML и проверки нескольких деталей в XML.

Теперь данные XML, которые я отправляю, содержат много деталей. В этот xml мне нужно будет вставить параметр, который я определил в своем тесте. Я не могу получить, как отправить данные в качестве параметра в XML перед отправкой.

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

id='12345'><version>1.3.4<</version><accno>1234567890</accno>add<address details</> ..........

Теперь в этой xml-структуре я параметризовал <accno>1234567890</accno> ... Среднее значение в начале скрипта, которое я объявляю accno='1234567890'

Теперь я хочу использовать accno в качестве параметра в xml вместо жестко заданного значения в xml. Подскажите пожалуйста как это сделать.

Ответы [ 4 ]

2 голосов
/ 16 января 2012

XML не обычный, но контекстно-свободный. Используйте правильный синтаксический анализатор как Nokogiri вместо регулярных выражений. См. Соответствие RegEx открытым тегам, за исключением автономных тегов XHTML .

Как ответ, как и просили.

1 голос
/ 16 января 2012

Я скажу, что редактирование xml - регулярное выражение - плохая идея.

но просто для ответа на прямой вопрос используйте gsub. например.

str.gsub(/reg_match/, newstring)

но лучшим способом будет использование hpricot ,

Или вы также можете использовать шаблоны ruby.

require 'erb'
require 'ostruct'

data = {:accno => "1234567890"}
variables = OpenStruct.new(data)

template = "<id='12345'><version>1.3.4</version><accno><%= accno%></accno>"

res = ERB.new(template).result(variables.instance_eval { binding })
puts res
1 голос
/ 16 января 2012

Сначала определите шаблон, затем замените его, используя gsub!

xml_data.gsub! (pattern, replacement)

http://ruby -doc.org / документы / ProgrammingRuby / html / ref_c_string.html # String.gsub_oh

0 голосов
/ 16 января 2012

Быстрый способ сделать это с помощью gsub (как говорит Раджкаран).Правильный способ сделать это - rexml или какая-либо другая библиотека xml.Инвестиции должны быть связаны с тем, как много вы будете использовать в будущем.

...