blob: e635fdcd110dff09e6de2d89eb1ad655aef77409 [file] [log] [blame]
Georges-Henri Baron326a31d2012-06-28 12:05:09 +02001/*
Patrick Benavoli68a91282011-08-31 11:23:23 +02002 * INTEL CONFIDENTIAL
Georges-Henri Baron326a31d2012-06-28 12:05:09 +02003 * Copyright © 2011 Intel
Patrick Benavoli68a91282011-08-31 11:23:23 +02004 * Corporation All Rights Reserved.
Georges-Henri Baron326a31d2012-06-28 12:05:09 +02005 *
Patrick Benavoli68a91282011-08-31 11:23:23 +02006 * The source code contained or described herein and all documents related to
7 * the source code ("Material") are owned by Intel Corporation or its suppliers
8 * or licensors. Title to the Material remains with Intel Corporation or its
9 * suppliers and licensors. The Material contains trade secrets and proprietary
10 * and confidential information of Intel or its suppliers and licensors. The
11 * Material is protected by worldwide copyright and trade secret laws and
12 * treaty provisions. No part of the Material may be used, copied, reproduced,
13 * modified, published, uploaded, posted, transmitted, distributed, or
14 * disclosed in any way without Intel’s prior express written permission.
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020015 *
Patrick Benavoli68a91282011-08-31 11:23:23 +020016 * No license under any patent, copyright, trade secret or other intellectual
17 * property right is granted to or conferred upon you by disclosure or delivery
18 * of the Materials, either expressly, by implication, inducement, estoppel or
19 * otherwise. Any license under such intellectual property rights must be
20 * express and approved by Intel in writing.
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020021 *
22 * CREATED: 2012-08-10
Patrick Benavoli68a91282011-08-31 11:23:23 +020023 */
Patrick Benavoli68a91282011-08-31 11:23:23 +020024
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020025#include "XmlStringDocSink.h"
26#include <libxml/parser.h>
Patrick Benavoli68a91282011-08-31 11:23:23 +020027
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020028#define base CXmlDocSink
Patrick Benavoli68a91282011-08-31 11:23:23 +020029
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020030CXmlStringDocSink::CXmlStringDocSink(string& strResult):
31 _strResult(strResult)
Patrick Benavoli68a91282011-08-31 11:23:23 +020032{
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020033}
Patrick Benavoli68a91282011-08-31 11:23:23 +020034
Georges-Henri Baroncec86c12012-09-04 17:30:28 +020035bool CXmlStringDocSink::doProcess(CXmlDocSource& xmlDocSource,
36 CXmlSerializingContext& serializingContext)
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020037{
38 (void)serializingContext;
Patrick Benavoli68a91282011-08-31 11:23:23 +020039
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020040 xmlChar* pcDumpedDoc = NULL;
Patrick Benavoli68a91282011-08-31 11:23:23 +020041
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020042 int iSize;
43 xmlDocDumpFormatMemoryEnc(xmlDocSource.getDoc(), &pcDumpedDoc, &iSize, "UTF-8", 1);
Patrick Benavoli68a91282011-08-31 11:23:23 +020044
Frédéric Boisnarda409daa2012-10-18 18:20:03 +020045 if (!pcDumpedDoc) {
46
47 return false;
48 }
49
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020050 _strResult.append((const char*)pcDumpedDoc);
51
52 xmlFree(pcDumpedDoc);
53
54 return true;
55}