blob: d3e18f94afcf954cfcd369a135949da3629d70b1 [file] [log] [blame]
Kevin Rocard93250d12012-07-19 17:48:30 +02001/*
Patrick Benavoli68a91282011-08-31 11:23:23 +02002 * INTEL CONFIDENTIAL
3 * Copyright © 2011 Intel
4 * Corporation All Rights Reserved.
5 *
6 * 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.
15 *
16 * 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.
21 *
Patrick Benavoli68a91282011-08-31 11:23:23 +020022 * CREATED: 2011-06-01
23 * UPDATED: 2011-07-27
Patrick Benavoli68a91282011-08-31 11:23:23 +020024 */
25#include "XmlSerializer.h"
26#include <libxml/tree.h>
27#include <stdlib.h>
28
29// Schedule for libxml2 library
30bool CXmlSerializer::_bLibXml2CleanupScheduled;
31
32CXmlSerializer::CXmlSerializer(const string& strXmlInstanceFile, const string& strXmlSchemaFile, const string& strRootElementType, CXmlSerializingContext& serializingContext) :
33 _strXmlInstanceFile(strXmlInstanceFile), _strXmlSchemaFile(strXmlSchemaFile), _strRootElementType(strRootElementType), _serializingContext(serializingContext), _pDoc(NULL), _pRootNode(NULL)
34{
Patrick Benavoli592ae562011-09-05 16:53:58 +020035 if (!_bLibXml2CleanupScheduled) {
Patrick Benavoli68a91282011-08-31 11:23:23 +020036
37 // Schedule cleanup
38 atexit(xmlCleanupParser);
39
40 _bLibXml2CleanupScheduled = true;
41 }
42}
43
44CXmlSerializer::~CXmlSerializer()
45{
46 // Free XML doc
47 xmlFreeDoc(_pDoc);
48}
49
50bool CXmlSerializer::close()
51{
52 // Free XML doc
53 xmlFreeDoc(_pDoc);
54
55 _pDoc = NULL;
56
57 return true;
58}
59
60bool CXmlSerializer::open()
61{
62 return _pDoc != NULL;
63}
64
65// Root element
66void CXmlSerializer::getRootElement(CXmlElement& xmlRootElement) const
67{
68 xmlRootElement.setXmlElement(_pRootNode);
69}
70
71string CXmlSerializer::getRootElementName() const
72{
73 return (const char*)_pRootNode->name;
74}
75
76string CXmlSerializer::getRootElementAttributeString(const string& strAttributeName) const
77{
78 CXmlElement topMostElement(_pRootNode);
79
80 return topMostElement.getAttributeString(strAttributeName);
81}
82
83