Sie können das Dokument direkt bearbeiten und die resultierende Ausgabe speichern. Wenn Sie Ihre Manipulationen auf ein bestimmtes Element beschränken, verändern Sie die Gesamtstruktur nicht und sollten keine Probleme haben.
Eine Bibliothek wie Nokogiri oder Hpricot wird Ihr Dokument nur dann anpassen, wenn es missgestaltet ist. Ich weiß, dass Hpricot so gecoacht werden kann, dass es eine entspanntere Parsing-Methode hat, oder dass es in einer strengeren XML/XHTML-Manier arbeitet.
Einfaches Beispiel:
require 'rubygems'
require 'hpricot'
document = <<END
<html>
<body>
<ul id="tag">
</ul>
<h1 class="indexed">Item 1</h1>
<h2 class="indexed">Item 1.1</h2>
<h1 class="indexed">Item 2</h1>
<h2 class="indexed">Item 2.1</h2>
<h2 class="indexed">Item 2.2</h2>
<h1>Remarks</h1>
<!-- Test Comment -->
</body>
</html>
END
parsed = Hpricot(document)
ul_tag = (parsed / 'ul#tag').first
sections = (parsed / '.indexed')
ul_tag.inner_html = sections.collect { |i| "<li>#{i.inner_html}</li>" }.to_s
puts parsed.to_html
Dies ergibt:
<html>
<body>
<ul id="tag"><li>Item 1</li><li>Item 1.1</li><li>Item 2</li><li>Item 2.1</li><li>Item 2.2</li></ul>
<h1 class="indexed">Item 1</h1>
<h2 class="indexed">Item 1.1</h2>
<h1 class="indexed">Item 2</h1>
<h2 class="indexed">Item 2.1</h2>
<h2 class="indexed">Item 2.2</h2>
<h1>Remarks</h1>
<!-- Test Comment -->
</body>
</html>