Method: Nokogiri::XML::Document#remove_namespaces!
- Defined in:
- ext/nokogiri/xml_document.c
#remove_namespaces! ⇒ Object
Remove all namespaces from all nodes in the document.
This could be useful for developers who either don’t understand namespaces or don’t care about them.
The following example shows a use case, and you can decide for yourself whether this is a good thing or not:
doc = Nokogiri::XML "<root>\n<car xmlns:part=\"http://general-motors.com/\">\n<part:tire>Michelin Model XGV</part:tire>\n</car>\n<bicycle xmlns:part=\"http://schwinn.com/\">\n<part:tire>I'm a bicycle tire!</part:tire>\n</bicycle>\n</root>\n"
doc.xpath("//tire").to_s # => ""
doc.xpath("//part:tire", "part" => "http://general-motors.com/").to_s # => "<part:tire>Michelin Model XGV</part:tire>"
doc.xpath("//part:tire", "part" => "http://schwinn.com/").to_s # => "<part:tire>I'm a bicycle tire!</part:tire>"
doc.remove_namespaces!
doc.xpath("//tire").to_s # => "<tire>Michelin Model XGV</tire><tire>I'm a bicycle tire!</tire>"
doc.xpath("//part:tire", "part" => "http://general-motors.com/").to_s # => ""
doc.xpath("//part:tire", "part" => "http://schwinn.com/").to_s # => ""
For more information on why this probably is not a good thing in general, please direct your browser to tenderlovemaking.com/2009/04/23/namespaces-in-xml.html
493 494 495 496 497 498 499 500 |
# File 'ext/nokogiri/xml_document.c', line 493 static VALUE remove_namespaces_bang(VALUE self) { xmlDocPtr doc = noko_xml_document_unwrap(self); recursively_remove_namespaces_from_node((xmlNodePtr)doc); return self; } |