Select Git revision
Example1
Libxml2Adapter.h 3.74 KiB
/***************************************************************************
* Copyright (C) 2008 by Oliver Bock *
* oliver.bock[AT]aei.mpg.de *
* *
* This file is part of Einstein@Home. *
* *
* Einstein@Home is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published *
* by the Free Software Foundation, version 2 of the License. *
* *
* Einstein@Home is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with Einstein@Home. If not, see <http://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef LIBXML2ADAPTER_H_
#define LIBXML2ADAPTER_H_
#include <string>
#include "XMLProcessorInterface.h"
#include <libxml/parser.h>
using namespace std;
/**
* \addtogroup framework Framework
* @{
*/
/**
* \brief This class implements XMLProcessorInterface providing an adapter to libxml2
*
* For the time being libxml2 is considered to be the only interesting XML processing
* library because of its rich feature set that comprises DOM, SAX, XPath, XSLT as well
* as validation based on DTD and XML Schema.
*
* \see XMLProcessorInterface
*
* \author Oliver Bock\n
* Max-Planck-Institute for Gravitational Physics\n
* Hannover, Germany
*/
class Libxml2Adapter : public XMLProcessorInterface
{
public:
/// Constructor
Libxml2Adapter();
/// Destructor
virtual ~Libxml2Adapter();
/**
* \brief Sets the XML document to be processed
*
* \param xml The XML document to be used for processing
* \param url The base URL of the document
*/
void setXmlDocument(const string xml, const string url);
/**
* \brief Retrieves a single node's (element or attribute) content
*
* This method takes a XPath expression that properly defines how to search
* for a specific node (element or attribute). If the XPath search results
* in more than one instance or if the node (or its content) can't be found
* the return value is NULL.
*
* \param xpath The XPath expression to be used for seaching
*
* \return The node's content or NULL in case of an error
*/
string getSingleNodeContentByXPath(const string xpath);
/**
* \brief Retrieves a single node's (element or attribute) content
*
* This method takes a XPath expression that properly defines how to search
* for a specific node (element or attribute). If the XPath search results
* in more than one instance or if the node (or its content) can't be found
* the return value is an empty string.
*
* \param xml The XML document to be used for processing
* \param url The base URL of the document
* \param xpath The XPath expression to be used for seaching
*
* \return The node's content or an empty string in case of an error
*/
string getSingleNodeContentByXPath(const string xml, const string url, const string xpath);
private:
/// The current XML document instance
xmlDocPtr m_xmlDocument;
};
/**
* @}
*/
#endif /*LIBXML2ADAPTER_H_*/