Есть ли способ передать строку в REXML::Element
таким образом, что строка будет проанализирована как XML, а найденные элементы будут вставлены в цель?REXML: Эквивалент javascript-DOM .innerHTML =
ответ
Это поможет, если вы могли бы привести пример, чтобы проиллюстрировать, что именно вы имели в виду.
С помощью JS innerHTML вы можете вставлять текст или HTML в один снимок, и изменения сразу отображаются в документе HTML. Единственный способ, которым я знаю, как это сделать в REXML, - это отдельные шаги для вставки содержимого/элементов и сохранения/перезагрузки документа.
Чтобы изменить текст конкретного элемента REXML, вы можете использовать метод text =().
#e represents a REXML Element
e.text = "blah"
Если вы хотите вставить другой элемент вы должны использовать add_element() метод.
#e represents a REXML Element
e.add_element('blah') #adds <blah></blah> to the existing element
b = e.get_elements('blah') #empty Element named "blah"
b.text('some text') #add some text to Element blah
Затем, конечно, сохраните документ XML с изменениями. ruby-doc.org/REXML/Element
text()
возвращает внутреннее содержание в виде строки
Вы можете расширить класс REXML :: Element, включив innerHTML, как показано ниже.
require "rexml/element"
class REXML::Element
def innerHTML=(xml)
require "rexml/document"
self.to_a.each do |e|
self.delete e
end
d = REXML::Document.new "<root>#{xml}</root>"
d.root.to_a.each do |e|
case e
when REXML::Text
self.add_text e
when REXML::Element
self.add_element e
else
puts "ERROR"
end
end
xml
end
def innerHTML
ret = ''
self.to_a.each do |e|
ret += e.to_s
end
ret
end
end
Затем вы можете использовать innerHTML, как в javascript (более или менее).
require "rexml/document"
doc = REXML::Document.new "<xml><alice><b>bob</b><chuck>ch<u>u</u>ck</chuck></alice><alice/></xml>"
c = doc.root.get_elements('//chuck').first
t = c.innerHTML
c.innerHTML = "#{t}<david>#{t}</david>"
c = doc.root.get_elements('//alice').last
c.innerHTML = "<david>#{t}</david>"
doc.write($stdout, 2)
- 1. Динамический эквивалент innerHTML?
- 2. innerHTML W3C эквивалент
- 3. Что такое эквивалент innerHTML в JQuery?
- 4. innerhtml эквивалент в JQuery не работает
- 5. REXML и кодировка
- 6. REXML сохранить атрибуты заказа
- 7. ошибка, связанная с REXML
- 8. Анализ XML с REXML
- 9. REXML - Разбор данных
- 10. REXML - Сохранение определенного элемента
- 11. REXML Проблемы с форматированием
- 12. Ruby 2.2 Использование REXML
- 13. рубин REXML получить дочерний элемент
- 14. доступа файл XML с REXML
- 15. Rails sidekiq pass REXML :: Элемент
- 16. Ruby - Поиск элементов с REXML
- 17. Получить имя узла с REXML
- 18. REXML разборе XML в рубиновых
- 19. javascript-эквивалент html_entity_decode, который не полагается на innerHTML?
- 20. Попытка захватить innerhtml изнутри innerhtml
- 21. REXML думает файл является каталогом и не будет создавать REXML :: Document
- 22. rexml page.root.has_elements? говорит, что никакие элементы
- 23. Сохранение пробелов/разрывов строк с REXML
- 24. Как управлять форматированием REXML на добавленных элементах?
- 25. Получение элементов в порядке с REXML XPath
- 26. Как заставить скрипт rexml/nokogiri работать быстрее
- 27. Ruby rexml xpath.each не пересекающиеся узлы
- 28. мышление-сфинкс + ошибка REXML в рельсах 2.3.8
- 29. rexml и nokogiri XML-синтаксический анализ
- 30. Запись XML с именами с REXML
Прошло несколько месяцев с тех пор, как я опубликовал вопрос, но я думаю, что я хотел бы, в основном, функциональность JH's innerHTML. У меня был какой-то внешний XML, который я хотел просто сбрасывать в существующий документ, без необходимости его сначала разбирать. Ах хорошо. – rampion
Не беспокойтесь. Если вы подумывали о том, чтобы выгрузить внешний XML в существующий HTML-документ, Javascript мог бы пойти [w3schools.com] (http://www.w3schools.com/dom/dom_loadxmldoc.asp). В противном случае вы создадите новый REXML-документ, передав строку __doc = Document.new (' ...') __ затем напишите в файл с __doc.write (output = File.open ('blah.xml', 'W')) __ –
rbnewb