XmlTools Class Reference

#include <XmlTools.hpp>

List of all members.

Classes

class  Finalizer

Static Public Member Functions

static
xsd::cxx::xml::dom::auto_ptr
< xercesc::DOMDocument > 
ReadXmlFile (const std::string &rFileName, const ::xsd::cxx::tree::properties< char > &rProps, bool validate=true)
static void Finalize ()
static
xsd::cxx::xml::dom::auto_ptr
< xercesc::DOMDocument > 
ReadFileToDomDocument (const std::string &rFileName,::xsd::cxx::xml::error_handler< char > &rErrorHandler, const ::xsd::cxx::tree::properties< char > &rProps, bool validate=true)
static void PrintNode (const std::string &rMsg, xercesc::DOMNode *pNode, bool showChildren=false)
static xercesc::DOMElement * SetNamespace (xercesc::DOMDocument *pDocument, xercesc::DOMElement *pElement, const std::string &rNamespace)
static xercesc::DOMElement * SetNamespace (xercesc::DOMDocument *pDocument, xercesc::DOMElement *pElement, const XMLCh *pNamespace)
static void WrapContentInElement (xercesc::DOMDocument *pDocument, xercesc::DOMElement *pElement, const XMLCh *pNewElementLocalName)
static std::vector
< xercesc::DOMElement * > 
GetChildElements (xercesc::DOMElement *pElement)
static std::vector
< xercesc::DOMElement * > 
FindElements (xercesc::DOMElement *pContextElement, const std::string &rPath)
static void FindElements (xercesc::DOMElement *pContextElement, const std::vector< std::string > &rNames, std::vector< xercesc::DOMElement * > &rResults, unsigned depth=0)
static std::string EscapeSpaces (const std::string &rPath)

Detailed Description

A class of utility methods for processing XML files, using Xerces and CodeSynthesis XSD.

Definition at line 61 of file XmlTools.hpp.


Member Function Documentation

std::string XmlTools::EscapeSpaces ( const std::string &  rPath  )  [static]

Helper method for URL-escaping spaces in file paths, to avoid confusing Xerces regarding schema locations. Note that this is a very specific fix: it doesn't do general URL-escaping.

Parameters:
rPath the path to escape

Definition at line 433 of file XmlTools.cpp.

Referenced by HeartConfig::ReadFile().

void XmlTools::Finalize (  )  [static]

Must be called after you have finished working with a document returned by the ReadXmlFile methods. An alternative is to instantiate

 XmlTools::Finalizer finalizer(false);

just before calling ReadXmlFile, provided that you will do all your processing within that scope. The finalizer object will call Finalize in its destructor.

Definition at line 98 of file XmlTools.cpp.

Referenced by ReadXmlFile(), and XmlTools::Finalizer::~Finalizer().

void XmlTools::FindElements ( xercesc::DOMElement *  pContextElement,
const std::vector< std::string > &  rNames,
std::vector< xercesc::DOMElement * > &  rResults,
unsigned  depth = 0 
) [static]

Find all elements matching the given path from this context element.

Parameters:
pContextElement the root element to search from
rNames a list of element names, the first of which is looked for as children of pContextElement; the next as children of those, etc.
rResults vector to be filled in with matching elements
depth for managing recursion; should not be provided by users

Definition at line 354 of file XmlTools.cpp.

References FindElements().

std::vector< xercesc::DOMElement * > XmlTools::FindElements ( xercesc::DOMElement *  pContextElement,
const std::string &  rPath 
) [static]

Find all elements matching the given path from this context element.

Parameters:
pContextElement the root element to search from
rPath where to search. This should be a '/'-separated path of element names.

Definition at line 375 of file XmlTools.cpp.

Referenced by XmlTransforms::CheckForIluPreconditioner(), FindElements(), XmlTransforms::TransformArchiveDirectory(), and XmlTransforms::TransformIonicModelDefinitions().

std::vector< xercesc::DOMElement * > XmlTools::GetChildElements ( xercesc::DOMElement *  pElement  )  [static]

Get all the child elements of the given element.

Parameters:
pElement the parent element

Definition at line 338 of file XmlTools.cpp.

Referenced by SetNamespace().

void XmlTools::PrintNode ( const std::string &  rMsg,
xercesc::DOMNode *  pNode,
bool  showChildren = false 
) [static]

Display key info about an XML node for debugging.

Parameters:
rMsg message to prepend to the report
pNode the node to display
showChildren whether to recursive display the node's children

Definition at line 257 of file XmlTools.cpp.

xsd::cxx::xml::dom::auto_ptr< xercesc::DOMDocument > XmlTools::ReadFileToDomDocument ( const std::string &  rFileName,
::xsd::cxx::xml::error_handler< char > &  rErrorHandler,
const ::xsd::cxx::tree::properties< char > &  rProps,
bool  validate = true 
) [static]

Read an XML file into a DOM document. Useful for figuring out what version of the parameters file we're dealing with, so we can construct the right version of the object model.

Based on http://wiki.codesynthesis.com/Tree/FAQ#How_do_I_parse_an_XML_document_to_a_Xerces-C.2B.2B_DOM_document.3F

Requires the Xerces runtime to have been initialised.

Parameters:
rFileName the file to read
rErrorHandler handler for any parsing errors
rProps properties that specify fixed schema locations, if wanted
validate whether to perform schema validation

Definition at line 120 of file XmlTools.cpp.

Referenced by ReadXmlFile().

xsd::cxx::xml::dom::auto_ptr< xercesc::DOMDocument > XmlTools::ReadXmlFile ( const std::string &  rFileName,
const ::xsd::cxx::tree::properties< char > &  rProps,
bool  validate = true 
) [static]

Read an XML file into a DOM document, turning parsing errors into Chaste Exceptions. Handles initialising the Xerces runtime.

Parameters:
rFileName the file to read
rProps properties that specify fixed schema locations, if wanted
validate whether to perform schema validation

Definition at line 48 of file XmlTools.cpp.

References EXCEPTION, Finalize(), and ReadFileToDomDocument().

Referenced by HeartConfig::ReadFile().

xercesc::DOMElement * XmlTools::SetNamespace ( xercesc::DOMDocument *  pDocument,
xercesc::DOMElement *  pElement,
const XMLCh *  pNamespace 
) [static]

Fake having a namespace in older configuration files, by setting the namespace on each element in a tree.

Based on http://wiki.codesynthesis.com/Tree/FAQ#How_do_I_parse_an_XML_document_that_is_missing_namespace_information.3F

Parameters:
pDocument the DOM document containing the tree to be transformed
pElement the root of the tree to be transformed
pNamespace the namespace to put elements in

Definition at line 286 of file XmlTools.cpp.

References GetChildElements(), and SetNamespace().

xercesc::DOMElement * XmlTools::SetNamespace ( xercesc::DOMDocument *  pDocument,
xercesc::DOMElement *  pElement,
const std::string &  rNamespace 
) [static]

Fake having a namespace in older configuration files, by setting the namespace on each element in a tree.

Based on http://wiki.codesynthesis.com/Tree/FAQ#How_do_I_parse_an_XML_document_that_is_missing_namespace_information.3F

Parameters:
pDocument the DOM document containing the tree to be transformed
pElement the root of the tree to be transformed
rNamespace the namespace to put elements in

Definition at line 330 of file XmlTools.cpp.

Referenced by HeartConfig::ReadFile(), and SetNamespace().

void XmlTools::WrapContentInElement ( xercesc::DOMDocument *  pDocument,
xercesc::DOMElement *  pElement,
const XMLCh *  pNewElementLocalName 
) [static]

Wrap the content (children) of an element within a new element. The new element becomes the sole child of the original element.

Note:
Doesn't transfer attributes.
Parameters:
pDocument the DOM document containing the tree to be transformed
pElement the element whose content is to be wrapped
pNewElementLocalName the local name (i.e. without namespace prefix) of the wrapping element (the namespace of pElement will be used).

Definition at line 400 of file XmlTools.cpp.

Referenced by XmlTransforms::TransformIonicModelDefinitions().


The documentation for this class was generated from the following files:
Generated on Thu Dec 22 13:08:18 2011 for Chaste by  doxygen 1.6.3