lib/lutaml/model/xml_adapter/nokogiri_adapter.rb in lutaml-model-0.3.19 vs lib/lutaml/model/xml_adapter/nokogiri_adapter.rb in lutaml-model-0.3.20
- old
+ new
@@ -31,24 +31,28 @@
options[:declaration] ? declaration(options) + xml_data : xml_data
end
private
+ def prefix_xml(xml, mapping, options)
+ if options.key?(:namespace_prefix)
+ options[:namespace_prefix] ? xml[options[:namespace_prefix]] : xml
+ elsif mapping.namespace_prefix
+ xml[mapping.namespace_prefix]
+ else
+ xml
+ end
+ end
+
def build_ordered_element(xml, element, options = {})
mapper_class = options[:mapper_class] || element.class
xml_mapping = mapper_class.mappings_for(:xml)
return xml unless xml_mapping
attributes = build_attributes(element, xml_mapping)&.compact
- prefixed_xml = if options.key?(:namespace_prefix)
- options[:namespace_prefix] ? xml[options[:namespace_prefix]] : xml
- elsif xml_mapping.namespace_prefix
- xml[xml_mapping.namespace_prefix]
- else
- xml
- end
+ prefixed_xml = prefix_xml(xml, xml_mapping, options)
tag_name = options[:tag_name] || xml_mapping.root_element
tag_name = "#{tag_name}_" if prefixed_xml.respond_to?(tag_name)
prefixed_xml.public_send(tag_name, attributes) do
if options.key?(:namespace_prefix) && !options[:namespace_prefix]
@@ -144,9 +148,13 @@
def to_xml
return text if text?
build_xml.doc.root.to_xml
+ end
+
+ def inner_xml
+ children.map(&:to_xml).join
end
def build_xml(builder = nil)
builder ||= Builder::Nokogiri.build