nhttpd/controlapi: make CDATA attribute in xml output switchable to fix xmltv.data

Origin commit data
------------------
Branch: ni/coolstream
Commit: c747e37e9a
Author: vanhofen <vanhofen@gmx.de>
Date: 2018-04-04 (Wed, 04 Apr 2018)

Origin message was:
------------------
- nhttpd/controlapi: make CDATA attribute in xml output switchable to fix xmltv.data

------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
vanhofen
2018-04-04 23:19:59 +02:00
parent 76d5a637a7
commit 7552067b07
3 changed files with 14 additions and 8 deletions

View File

@@ -3234,6 +3234,7 @@ void CControlAPI::xmltvepgCGI(CyhookHandler *hh)
hh->ParamList["format"] = "xml";
hh->outStart();
bool xml_cdata = false;
t_channel_id channel_id;
std::string result = "";
std::string channelTag = "", channelData = "";
@@ -3256,7 +3257,7 @@ void CControlAPI::xmltvepgCGI(CyhookHandler *hh)
CZapitChannel * channel = chanlist[j];
channel_id = channel->getChannelID() & 0xFFFFFFFFFFFFULL;
channelTag = "channel id=\""+string_printf(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, channel_id)+"\"";
channelData = hh->outPair("display-name", hh->outValue(channel->getName()), true);
channelData = hh->outPair("display-name", hh->outValue(channel->getName(), xml_cdata), true);
result += hh->outObject(channelTag, channelData);
eList.clear();
@@ -3284,8 +3285,8 @@ void CControlAPI::xmltvepgCGI(CyhookHandler *hh)
strftime(zbuffer, 21, "%Y%m%d%H%M%S +0200", mtime);
programmeTag += "stop=\""+std::string(zbuffer)+"\" ";
programmeData = hh->outPair("title lang=\"de\"", hh->outValue(eventIterator->description), false);
programmeData += hh->outPair("desc lang=\"de\"", hh->outValue(eventIterator->text), true);
programmeData = hh->outPair("title lang=\"de\"", hh->outValue(eventIterator->description, xml_cdata), false);
programmeData += hh->outPair("desc lang=\"de\"", hh->outValue(eventIterator->text, xml_cdata), true);
result += hh->outArrayItem(programmeTag, programmeData, false);
}

View File

@@ -540,13 +540,18 @@ std::string CyhookHandler::outObject(std::string _key, std::string _content, boo
}
//-----------------------------------------------------------------------------
std::string CyhookHandler::outValue(std::string _content) {
std::string CyhookHandler::outValue(std::string _content, bool _xml_cdata) {
std::string result = "";
switch (outType) {
case xml:
result += "<![CDATA[";
result += convert_UTF8_To_UTF8_XML(utf8_check_is_valid(_content) ? _content.c_str() : iso_8859_1_to_utf8(_content).c_str());
result += "]]>";
if (_xml_cdata)
{
result = "<![CDATA[" + _content + "]]>";;
}
else
{
result = convert_UTF8_To_UTF8_XML(utf8_check_is_valid(_content) ? _content.c_str() : iso_8859_1_to_utf8(_content).c_str());
}
break;
case json:
result = json_convert_string(_content);

View File

@@ -211,7 +211,7 @@ public:
std::string outArray(std::string _key, std::string _content, bool _next = false);
std::string outArrayItem(std::string _key, std::string _content, bool _next);
std::string outObject(std::string _key,std::string _content, bool _next = false);
std::string outValue(std::string _content);
std::string outValue(std::string _content, bool _xml_cdata = true);
std::string outNext();
friend class CyParser;
};