From 6a3fc311ce0b49b89ef41e2865a1099c97af9935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Wed, 16 May 2007 22:40:56 +0000 Subject: [PATCH] fixed CDATA processing to convert the content to output charset, it should be treated just like text in this respect git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46079 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/xml/xml.cpp | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/src/xml/xml.cpp b/src/xml/xml.cpp index 61617537a9..b61c223955 100644 --- a/src/xml/xml.cpp +++ b/src/xml/xml.cpp @@ -459,7 +459,6 @@ struct wxXmlParsingContext wxXmlNode *lastAsText; wxString encoding; wxString version; - bool bLastCdata; bool removeWhiteOnlyNodes; }; @@ -501,15 +500,7 @@ static void TextHnd(void *userData, const char *s, int len) if (ctx->lastAsText) { - if ( ctx->bLastCdata ) - { - ctx->lastAsText->SetContent(ctx->lastAsText->GetContent() + - CharToString(NULL, s, len)); - } - else - { - ctx->lastAsText->SetContent(ctx->lastAsText->GetContent() + str); - } + ctx->lastAsText->SetContent(ctx->lastAsText->GetContent() + str); } else { @@ -531,22 +522,11 @@ static void StartCdataHnd(void *userData) { wxXmlParsingContext *ctx = (wxXmlParsingContext*)userData; - ctx->bLastCdata = true; - ctx->lastAsText = new wxXmlNode(wxXML_CDATA_SECTION_NODE, wxT("cdata"),wxT("")); ctx->node->AddChild(ctx->lastAsText); } } -extern "C" { -static void EndCdataHnd(void *userData) -{ - wxXmlParsingContext *ctx = (wxXmlParsingContext*)userData; - - ctx->bLastCdata = false; -} -} - extern "C" { static void CommentHnd(void *userData, const char *data) { @@ -640,12 +620,11 @@ bool wxXmlDocument::Load(wxInputStream& stream, const wxString& encoding, int fl ctx.conv = new wxCSConv(encoding); #endif ctx.removeWhiteOnlyNodes = (flags & wxXMLDOC_KEEP_WHITESPACE_NODES) == 0; - ctx.bLastCdata = false; XML_SetUserData(parser, (void*)&ctx); XML_SetElementHandler(parser, StartElementHnd, EndElementHnd); XML_SetCharacterDataHandler(parser, TextHnd); - XML_SetCdataSectionHandler(parser, StartCdataHnd, EndCdataHnd ); + XML_SetStartCdataSectionHandler(parser, StartCdataHnd); XML_SetCommentHandler(parser, CommentHnd); XML_SetDefaultHandler(parser, DefaultHnd); XML_SetUnknownEncodingHandler(parser, UnknownEncodingHnd, NULL);