|
From: Knut A. R. <kn...@if...> - 2010-03-27 15:19:54
|
* Andrej van der Zee
> I am a happy user of libxmlpp for some time now. One thing I could not
> find out yet. How can I ignore empty text nodes?
[...]
Hi.
I have used the following XPath-based technique to remove such nodes in
order to "normalize" XML-documents that are stored in pretty-printed
format. The reason I had them stored pretty-printed, was to improve
readability in a test suite. I would not use pretty-printing on XML that
is going directly between machines.
void remove_whitespace_nodes(xmlpp::Document & doc)
{
xmlpp::NodeSet whitespace_nodes =
doc.get_root_node()->find("//text()[normalize-space()='']");
for (xmlpp::NodeSet::const_iterator it = whitespace_nodes.begin();
it != whitespace_nodes.end();
++it)
{
(*it)->get_parent()->remove_child(*it);
}
}
Make sure the XPath above does not identify nodes that carries meaning
to your application, otherwise you would have to refine it somehow.
--
Sincerely,
Knut Aksel Røysland
|