diff options
author | Georges-Henri Baron <georges-henrix.baron@intel.com> | 2012-06-28 12:05:09 +0200 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-12 17:03:13 +0100 |
commit | 326a31df0dd401283de6170ed09bcf605f61ef7d (patch) | |
tree | 8b41618325db75380a53df102e2f0e62451a3b2b /xmlserializer/XmlParser.cpp | |
parent | dc32d63f2ed740af1bfc0b3f8fd2337cba46d895 (diff) | |
download | external_parameter-framework-326a31df0dd401283de6170ed09bcf605f61ef7d.zip external_parameter-framework-326a31df0dd401283de6170ed09bcf605f61ef7d.tar.gz external_parameter-framework-326a31df0dd401283de6170ed09bcf605f61ef7d.tar.bz2 |
PFW: Add two commands to print xml settings and structure
BZ: 44910
Creates two commands that can be called through the command
line of the parameter-framework. First command getDomainXML
returns a string containing the xml structure of the
domains, configurations and settings. Second command
getSystemClassXML returns a string containing the xml
structure of all the instantiated parameter with their
attributes.
Change-Id: I9a35333802049a2177b8fc416754fdb67e6efff0
Signed-off-by: Georges-Henri Baron <georges-henrix.baron@intel.com>
Reviewed-on: http://android.intel.com:8080/55155
Reviewed-by: Rocard, KevinX <kevinx.rocard@intel.com>
Reviewed-by: Centelles, Sylvain <sylvain.centelles@intel.com>
Tested-by: Mendi, EduardoX <eduardox.mendi@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'xmlserializer/XmlParser.cpp')
-rw-r--r-- | xmlserializer/XmlParser.cpp | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/xmlserializer/XmlParser.cpp b/xmlserializer/XmlParser.cpp deleted file mode 100644 index af26346..0000000 --- a/xmlserializer/XmlParser.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/* - * INTEL CONFIDENTIAL - * Copyright © 2011 Intel - * Corporation All Rights Reserved. - * - * The source code contained or described herein and all documents related to - * the source code ("Material") are owned by Intel Corporation or its suppliers - * or licensors. Title to the Material remains with Intel Corporation or its - * suppliers and licensors. The Material contains trade secrets and proprietary - * and confidential information of Intel or its suppliers and licensors. The - * Material is protected by worldwide copyright and trade secret laws and - * treaty provisions. No part of the Material may be used, copied, reproduced, - * modified, published, uploaded, posted, transmitted, distributed, or - * disclosed in any way without Intel’s prior express written permission. - * - * No license under any patent, copyright, trade secret or other intellectual - * property right is granted to or conferred upon you by disclosure or delivery - * of the Materials, either expressly, by implication, inducement, estoppel or - * otherwise. Any license under such intellectual property rights must be - * express and approved by Intel in writing. - * - * CREATED: 2011-06-01 - * UPDATED: 2011-07-27 - */ -#include "XmlParser.h" -#include <stdio.h> -#include <stdarg.h> -#include <libxml/parser.h> -#include <libxml/tree.h> -#include <libxml/xmlschemas.h> - -#define base CXmlSerializer - - -CXmlParser::CXmlParser(const string& strXmlInstanceFile, const string& strXmlSchemaFile, const string& strRootElementType, CXmlSerializingContext& serializingContext) : - base(strXmlInstanceFile, strXmlSchemaFile, strRootElementType, serializingContext) -{ -} - -CXmlParser::~CXmlParser() -{ -} - -void CXmlParser::schemaValidityStructuredErrorFunc(void* pUserData, _xmlError* pError) -{ - (void)pUserData; - -#ifdef LIBXML_SCHEMAS_ENABLED - // Display message - puts(pError->message); -#endif -} - -bool CXmlParser::isInstanceDocumentValid() -{ -#ifdef LIBXML_SCHEMAS_ENABLED - xmlDocPtr pSchemaDoc = xmlReadFile(_strXmlSchemaFile.c_str(), NULL, XML_PARSE_NONET); - - if (!pSchemaDoc) { - // Unable to load Schema - return false; - } - - xmlSchemaParserCtxtPtr pParserCtxt = xmlSchemaNewDocParserCtxt(pSchemaDoc); - - if (!pParserCtxt) { - - // Unable to create schema context - xmlFreeDoc(pSchemaDoc); - return false; - } - - // Get Schema - xmlSchemaPtr pSchema = xmlSchemaParse(pParserCtxt); - - if (!pSchema) { - - // Invalid Schema - xmlSchemaFreeParserCtxt(pParserCtxt); - xmlFreeDoc(pSchemaDoc); - return false; - } - xmlSchemaValidCtxtPtr pValidationCtxt = xmlSchemaNewValidCtxt(pSchema); - - if (!pValidationCtxt) { - - // Unable to create validation context - xmlSchemaFree(pSchema); - xmlSchemaFreeParserCtxt(pParserCtxt); - xmlFreeDoc(pSchemaDoc); - return false; - } - - xmlSetStructuredErrorFunc(this, schemaValidityStructuredErrorFunc); - //xmlSchemaSetValidErrors(pValidationCtxt, schemaValidityErrorFunc, schemaValidityWarningFunc, NULL); - - bool isDocValid = xmlSchemaValidateDoc(pValidationCtxt, _pDoc) == 0; - - xmlSchemaFreeValidCtxt(pValidationCtxt); - xmlSchemaFree(pSchema); - xmlSchemaFreeParserCtxt(pParserCtxt); - xmlFreeDoc(pSchemaDoc); - - return isDocValid; -#else - return true; -#endif -} - -bool CXmlParser::open() -{ - // Parse the file and get the DOM - _pDoc = xmlReadFile(_strXmlInstanceFile.c_str(), NULL, 0); - - if (!_pDoc) { - - _serializingContext.setError("Could not parse file " + _strXmlInstanceFile); - - return false; - } - // Validate - if (!isInstanceDocumentValid()) { - - _serializingContext.setError("Document " + _strXmlInstanceFile + " is not valid"); - - // Free XML doc - xmlFreeDoc(_pDoc); - - _pDoc = NULL; - - return false; - } - - // Get the root element node - _pRootNode = xmlDocGetRootElement(_pDoc); - - // Check Root element type - if (getRootElementName() != _strRootElementType) { - - _serializingContext.setError("Error: Wrong XML structure file " + _strXmlInstanceFile); - _serializingContext.appendLineToError("Root Element " + getRootElementName() + " mismatches expected type " + _strRootElementType); - - return false; - } - - return base::open(); -} - -bool CXmlParser::parse(IXmlSink* pXmlSink) -{ - // Parse document - CXmlElement topMostElement(_pRootNode); - - return pXmlSink->fromXml(topMostElement, _serializingContext); -} - |