J'essaye de compacter un XML existant en utilisant Nokogiri. J'ai le code de démonstration suivante:Compacter XML existant en utilisant nokogiri
#!/usr/bin/env ruby
require 'nokogiri'
doc = Nokogiri.XML <<-XML.strip
<?xml version="1.0" encoding="UTF-8"?>
<root>
<foo>
<bar>test</bar>
</foo>
</root>
XML
doc.write_xml_to($stdout, indent: 0)
Je me attendais à voir
<?xml version="1.0" encoding="UTF-8"?>
<root><foo><bar>test</bar></foo></root>
Mais au lieu que j'ai vu
<?xml version="1.0" encoding="UTF-8"?>
<root>
<foo>
<bar>test</bar>
</foo>
</root>
J'ai essayé
doc.write_to($stdout, indent: 0, save_with: Nokogiri::XML::Node::SaveOptions::AS_XML)
mais n » Je ne travaille pas non plus.
Comment puis-je supprimer les espaces ignorables?
https://stackoverflow.com/questions/8406251/nokogiri-to-xml-without-carriage-returns peut Aidez-moi. J'allais suggérer des sous mais ce n'est pas faisable si vous avez plusieurs niveaux de données. Le seul autre que je peux penser est d'utiliser regex, mais si vous aviez des chaînes longues dans les attributs ou les valeurs XML alors cela ne fonctionnerait probablement pas non plus. – whodini9
@ whodini9 Je n'utilise pas de constructeur car mon but ultime est de compacter un fichier XML existant. De plus, selon la documentation officielle et le code source de Nokogiri, 'Node # write_xml_to' appelle simplement' Node # write_to' avec l'option 'save_with: DEFAULT_XML'. Au fait, 'AS_XML' est un alias de' DEFAULT_XML'. –