Suppress multiple blanks and control characters from the

node text retrieved by libxml2.

Modified:
libdoc.cpp
This commit is contained in:
Olivier Bertrand 2013-02-15 15:53:27 +01:00
parent b2f11bf0c4
commit a2cf90d9ce

View file

@ -461,7 +461,27 @@ char *XML2NODE::GetText(char *buf, int len)
xmlFree(Content);
if ((Content = xmlNodeGetContent(Nodep))) {
int rc = ((PXDOC2)Doc)->Decode(Content, buf, len);
char *p1, *p2;
bool b = false;
int rc = ((PXDOC2)Doc)->Decode(Content, buf, len);
// Eliminate extra characters
for (p1 = p2 = buf; *p1; p1++)
if (strchr(" \t\r\n", *p1)) {
if (b) {
*p2++ = ' ';
b = false;
} // endif b
} else {
*p2++ = *p1;
b = true;
} // endif p1
if (*(p2 - 1) == ' ')
*(p2 - 1) = 0;
else
*p2 = 0;
if (trace)
htrc("GetText buf='%s' len=%d rc=%d\n", buf, len, rc);