Chaste Release::3.1
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 (const xercesc::DOMElement *pElement)
static std::vector
< xercesc::DOMElement * > 
FindElements (const xercesc::DOMElement *pContextElement, const std::string &rPath)
static void FindElements (const 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 68 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:
rPaththe path to escape

Definition at line 444 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 105 of file XmlTools.cpp.

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

void XmlTools::FindElements ( const 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:
pContextElementthe root element to search from
rNamesa list of element names, the first of which is looked for as children of pContextElement; the next as children of those, etc.
rResultsvector to be filled in with matching elements
depthfor managing recursion; should not be provided by users

Definition at line 361 of file XmlTools.cpp.

References FindElements().

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

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

Parameters:
pContextElementthe root element to search from
rPathwhere to search. This should be a '/'-separated path of element names.

Definition at line 386 of file XmlTools.cpp.

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

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

Get all the child elements of the given element.

Parameters:
pElementthe parent element

Definition at line 345 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:
rMsgmessage to prepend to the report
pNodethe node to display
showChildrenwhether to recursive display the node's children

Definition at line 264 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:
rFileNamethe file to read
rErrorHandlerhandler for any parsing errors
rPropsproperties that specify fixed schema locations, if wanted
validatewhether to perform schema validation

Definition at line 127 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:
rFileNamethe file to read
rPropsproperties that specify fixed schema locations, if wanted
validatewhether to perform schema validation

Definition at line 55 of file XmlTools.cpp.

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

Referenced by HeartConfig::ReadFile().

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:
pDocumentthe DOM document containing the tree to be transformed
pElementthe root of the tree to be transformed
rNamespacethe namespace to put elements in

Definition at line 337 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:
pDocumentthe DOM document containing the tree to be transformed
pElementthe root of the tree to be transformed
pNamespacethe namespace to put elements in

Definition at line 293 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:
pDocumentthe DOM document containing the tree to be transformed
pElementthe element whose content is to be wrapped
pNewElementLocalNamethe local name (i.e. without namespace prefix) of the wrapping element (the namespace of pElement will be used).

Definition at line 411 of file XmlTools.cpp.

Referenced by XmlTransforms::TransformIonicModelDefinitions().


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