XmlTools Class Reference

#include <XmlTools.hpp>

List of all members.

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)
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)
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)

Classes

class  Finalizer


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

xsd::cxx::xml::dom::auto_ptr< xercesc::DOMDocument > XmlTools::ReadXmlFile ( const std::string &  rFileName,
const ::xsd::cxx::tree::properties< char > &  rProps 
) [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

Definition at line 48 of file XmlTools.cpp.

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

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 97 of file XmlTools.cpp.

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

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 
) [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

Definition at line 119 of file XmlTools.cpp.

Referenced by ReadXmlFile().

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 231 of file XmlTools.cpp.

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 304 of file XmlTools.cpp.

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

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 260 of file XmlTools.cpp.

References GetChildElements(), 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 374 of file XmlTools.cpp.

Referenced by 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 312 of file XmlTools.cpp.

Referenced by SetNamespace().

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 349 of file XmlTools.cpp.

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

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 328 of file XmlTools.cpp.

References FindElements().

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 407 of file XmlTools.cpp.

Referenced by HeartConfig::ReadFile().


The documentation for this class was generated from the following files:

Generated on Tue May 31 14:34:30 2011 for Chaste by  doxygen 1.5.5