http://qs1969.pair.com?node_id=11138827


in reply to Avoiding escaped child elements with HTML::TreeBuilder::XPath or HTML::Element

# ... omitting rest of the stuff which happens to $li ...

This is actually the important bit. A DOM tree is a tree of objects, so in your call to $item->replace_with($new);, $new needs to be a tree of objects representing the HTML that you want to insert, not just a single text node. One would normally do this by directly manipulating the objects in the tree, or building a new subtree to replace the old one. But you haven't told us what manipulations you wish to do, so it's difficult to make a more specific recommendation. Your expected output is identical to your input except for whitespace changes (and the insertion of "HTML::TreeBuilder::XPath", which I am guessing might be a mistake), but because whitespace is insignificant in many places in HTML/XML, I can't tell what manipulations you might want to make here.