Код Ruby для быстрой-и-грязной сериализации XML?

Как упоминалось в других ответах, JavaScript-выражения не поддерживают классы символов Unicode. Однако есть библиотека, которая обеспечивает это: отличный XRegExp Стивена Левитана и его плагин Unicode .

7
задан xian 4 October 2009 в 13:28
поделиться

5 ответов

Вы могли использовать Разработчика вместо того, чтобы создать Ваш to_xml метод, и Вы могли использовать XMLSimple для получения по запросу XML-файла в Хеш вместо того, чтобы использовать из _xml метода. К сожалению, я не уверен, что Вы действительно получите все так очень от использования этих методов.

1
ответ дан 7 December 2019 в 18:46
поделиться

Могли Вы определять метод, отсутствующий, который позволяет Вам делать:

@bar = el.bar? Это избавилось бы от некоторого шаблона. Если Летучая мышь всегда будет определенной тот путь, Вы могли бы продвинуть XPath в инициализировать метод,

class Bar
  def initialize(el)
    self.from_xml(XPath.first(el, "./bat"))
  end
end

Hpricot или REXML могли бы помочь также.

0
ответ дан 7 December 2019 в 18:46
поделиться

Вы могли попытаться анализировать XML с hpricot и использовать вывод для создания простого объекта Ruby? [ПРАВОВАЯ ОГОВОРКА] я не попробовал это.

0
ответ дан 7 December 2019 в 18:46
поделиться

Я предлагаю использовать XmlSimple для запуска. После выполнения XmlSimple#xml_in на входном файле Вы получаете хеш. Затем можно ли рекурсивно вызвать в него (obj.instance_variables) и повернуть ли все внутренние хеши (элемент is_a? (Хеш)) к объектам того же имени, например:

obj.instance_variables.find {|v| obj.send(v.gsub(/^@/,'').to_sym).is_a?(Hash)}.each do |h|
  klass= eval(h.sub(/^@(.)/) { $1.upcase })

Возможно, более чистый путь, как могут находить, делает это. Впоследствии, если Вы захотите сделать xml из этого нового объекта, то необходимо будет, вероятно, изменить XmlSimple#xml_out для принятия другой опции, которая отличает объект от обычного хеша, который это используется для получения как аргумент, и затем необходимо будет записать версию метода XmlSimple#value_to_xml, таким образом, это назовет метод доступа вместо того, чтобы пытаться получить доступ к структуре хеша. Другая опция, имеет всю Вашу поддержку классов [] оператор путем возврата требуемой переменной экземпляра.

1
ответ дан 7 December 2019 в 18:46
поделиться

Я разделил бы attr_accessor на подклассы для создания to_xml и from_xml для Вас.

Что-то вроде этого (примечание, это не полностью функционально, только схема),

class XmlFoo
  def self.attr_accessor attributes = {}
    # need to add code here to maintain a list of the fields for the subclass, to be used in to_xml and from_xml
    attributes.each do |name, value|
      super name
    end
  end

  def to_xml options={}
    # need to use the hash of elements, and determine how to handle them by whether they are .kind_of?(XmlFoo)
  end

  def from_xml el
  end
end

Вы могли затем использовать его как....

class Second < XmlFoo
  attr_accessor :first_attr => String, :second_attr => Float
end

class First < XmlFoo
  attr_accessor :normal_attribute => String, :sub_element => Second
end

Надежда это дает общее представление.

0
ответ дан 7 December 2019 в 18:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: