- raise OSM::APIBadUserInput.new("Unexpected element type #{model_name}, " +
- "expected node, way or relation.") if model.nil?
- yield model, @reader.expand
+ if model.nil?
+ raise OSM::APIBadUserInput, "Unexpected element type #{model_name}, " \
+ "expected node, way or relation."
+ end
+ # new in libxml-ruby >= 2, expand returns an element not associated
+ # with a document. this means that there's no encoding parameter,
+ # which means basically nothing works.
+ expanded = @reader.expand
+
+ # create a new, empty document to hold this expanded node
+ new_node = @doc.import(expanded)
+ @doc.root << new_node
+
+ yield model, new_node