OpenMS
XMLHandler Class Reference

Base class for XML handlers. More...

#include <OpenMS/FORMAT/HANDLERS/XMLHandler.h>

Inheritance diagram for XMLHandler:
[legend]
Collaboration diagram for XMLHandler:
[legend]

Classes

class  EndParsingSoftly
 Exception that is thrown if the parsing is ended by some event (e.g. if only a prefix of the XML file is needed). More...
 

Public Types

enum  ActionMode { LOAD , STORE }
 Action to set the current mode (for error messages) More...
 
enum  LOADDETAIL { LD_ALLDATA , LD_RAWCOUNTS , LD_COUNTS_WITHOPTIONS }
 

Public Member Functions

 XMLHandler (const String &filename, const String &version)
 Default constructor. More...
 
 ~XMLHandler () override
 Destructor. More...
 
void reset ()
 Release internal memory used for parsing (call. More...
 

Protected Member Functions

General MetaInfo handling (for idXML, featureXML, consensusXML)
void writeUserParam_ (const String &tag_name, std::ostream &os, const MetaInfoInterface &meta, UInt indent) const
 Writes the content of MetaInfoInterface to the file. More...
 
String conversion
Int asInt_ (const String &in) const
 Conversion of a String to an integer value. More...
 
Int asInt_ (const XMLCh *in) const
 Conversion of a Xerces string to an integer value. More...
 
UInt asUInt_ (const String &in) const
 Conversion of a String to an unsigned integer value. More...
 
double asDouble_ (const String &in) const
 Conversion of a String to a double value. More...
 
float asFloat_ (const String &in) const
 Conversion of a String to a float value. More...
 
bool asBool_ (const String &in) const
 Conversion of a string to a boolean value. More...
 
DateTime asDateTime_ (String date_string) const
 Conversion of a xs:datetime string to a DateTime value. More...
 

Reimplemented XERCES-C error handlers

These methods forward the error message to our own error handlers below.

String file_
 File name. More...
 
String version_
 Schema version. More...
 
StringManager sm_
 Helper class for string conversion. More...
 
std::vector< Stringopen_tags_
 Stack of open XML tags. More...
 
LOADDETAIL load_detail_
 parse only until total number of scans and chroms have been determined from attributes More...
 
void fatalError (const xercesc::SAXParseException &exception) override
 
void error (const xercesc::SAXParseException &exception) override
 
void warning (const xercesc::SAXParseException &exception) override
 
void fatalError (ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
 Fatal error handler. Throws a ParseError exception. More...
 
void error (ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
 Error handler for recoverable errors. More...
 
void warning (ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
 Warning handler. More...
 
void characters (const XMLCh *const chars, const XMLSize_t length) override
 Parsing method for character data. More...
 
void startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const xercesc::Attributes &attrs) override
 Parsing method for opening tags. More...
 
void endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname) override
 Parsing method for closing tags. More...
 
virtual void writeTo (std::ostream &)
 Writes the contents to a stream. More...
 
virtual LOADDETAIL getLoadDetail () const
 handler which support partial loading, implement this method More...
 
virtual void setLoadDetail (const LOADDETAIL d)
 handler which support partial loading, implement this method More...
 
DataValue cvParamToValue (const ControlledVocabulary &cv, const String &parent_tag, const String &accession, const String &name, const String &value, const String &unit_accession) const
 Convert the value of a <cvParam value=.> (as commonly found in PSI schemata) to the DataValue with the correct type (e.g. int) according to the type stored in the CV (usually PSI-MS CV), as well as set its unit. More...
 
DataValue cvParamToValue (const ControlledVocabulary &cv, const CVTerm &raw_term) const
 Convert the value of a <cvParam value=.> (as commonly found in PSI schemata) to the DataValue with the correct type (e.g. int) according to the type stored in the CV (usually PSI-MS CV), as well as set its unit. More...
 
void checkUniqueIdentifiers_ (const std::vector< ProteinIdentification > &prot_ids) const
 
static String writeXMLEscape (const String &to_escape)
 Escapes a string and returns the escaped string. More...
 
static DataValue fromXSDString (const String &type, const String &value)
 Convert an XSD type (e.g. 'xsd:double') to a DataValue. More...
 
bool equal_ (const XMLCh *a, const XMLCh *b) const
 Returns if two Xerces strings are equal. More...
 

controlled vocabulary handling methods

std::vector< std::vector< String > > cv_terms_
 Array of CV term lists (one sublist denotes one term and it's children) More...
 
SignedSize cvStringToEnum_ (const Size section, const String &term, const char *message, const SignedSize result_on_error=0)
 

Accessing attributes

String attributeAsString_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a String. More...
 
Int attributeAsInt_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a Int. More...
 
double attributeAsDouble_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a double. More...
 
DoubleList attributeAsDoubleList_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a DoubleList. More...
 
IntList attributeAsIntList_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to an IntList. More...
 
StringList attributeAsStringList_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to an StringList. More...
 
bool optionalAttributeAsString_ (String &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the String value if the attribute is present. More...
 
bool optionalAttributeAsInt_ (Int &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the Int value if the attribute is present. More...
 
bool optionalAttributeAsUInt_ (UInt &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the UInt value if the attribute is present. More...
 
bool optionalAttributeAsDouble_ (double &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the double value if the attribute is present. More...
 
bool optionalAttributeAsDoubleList_ (DoubleList &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the DoubleList value if the attribute is present. More...
 
bool optionalAttributeAsStringList_ (StringList &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the StringList value if the attribute is present. More...
 
bool optionalAttributeAsIntList_ (IntList &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the IntList value if the attribute is present. More...
 
String attributeAsString_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a String. More...
 
Int attributeAsInt_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a Int. More...
 
double attributeAsDouble_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a double. More...
 
DoubleList attributeAsDoubleList_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a DoubleList. More...
 
IntList attributeAsIntList_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a IntList. More...
 
StringList attributeAsStringList_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a StringList. More...
 
bool optionalAttributeAsString_ (String &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the String value if the attribute is present. More...
 
bool optionalAttributeAsInt_ (Int &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the Int value if the attribute is present. More...
 
bool optionalAttributeAsUInt_ (UInt &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the UInt value if the attribute is present. More...
 
bool optionalAttributeAsDouble_ (double &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the double value if the attribute is present. More...
 
bool optionalAttributeAsDoubleList_ (DoubleList &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the DoubleList value if the attribute is present. More...
 
bool optionalAttributeAsIntList_ (IntList &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the IntList value if the attribute is present. More...
 
bool optionalAttributeAsStringList_ (StringList &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the StringList value if the attribute is present. More...
 
 XMLHandler ()
 Not implemented. More...
 
const StringexpectList_ (const String &str) const
 

Detailed Description

Base class for XML handlers.

Member Enumeration Documentation

◆ ActionMode

enum ActionMode

Action to set the current mode (for error messages)

Enumerator
LOAD 

Loading a file.

STORE 

Storing a file.

◆ LOADDETAIL

enum LOADDETAIL
Enumerator
LD_ALLDATA 
LD_RAWCOUNTS 
LD_COUNTS_WITHOPTIONS 

Constructor & Destructor Documentation

◆ XMLHandler() [1/2]

XMLHandler ( const String filename,
const String version 
)

Default constructor.

◆ ~XMLHandler()

~XMLHandler ( )
override

Destructor.

◆ XMLHandler() [2/2]

XMLHandler ( )
private

Not implemented.

Member Function Documentation

◆ asBool_()

bool asBool_ ( const String in) const
inlineprotected

Conversion of a string to a boolean value.

'true', 'false', '1' and '0' are accepted.


For all other values a parse error is produced.

◆ asDateTime_()

DateTime asDateTime_ ( String  date_string) const
inlineprotected

Conversion of a xs:datetime string to a DateTime value.

References DateTime::set(), String::substr(), and String::trim().

◆ asDouble_()

double asDouble_ ( const String in) const
inlineprotected

Conversion of a String to a double value.

References String::toDouble().

◆ asFloat_()

float asFloat_ ( const String in) const
inlineprotected

Conversion of a String to a float value.

References String::toFloat().

◆ asInt_() [1/2]

Int asInt_ ( const String in) const
inlineprotected

Conversion of a String to an integer value.

References String::toInt().

◆ asInt_() [2/2]

Int asInt_ ( const XMLCh *  in) const
inlineprotected

Conversion of a Xerces string to an integer value.

◆ asUInt_()

UInt asUInt_ ( const String in) const
inlineprotected

Conversion of a String to an unsigned integer value.

References String::toInt().

◆ attributeAsDouble_() [1/2]

double attributeAsDouble_ ( const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Converts an attribute to a double.

References StringManager::convert(), StringManager::convertPtr(), and String::toDouble().

◆ attributeAsDouble_() [2/2]

double attributeAsDouble_ ( const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Converts an attribute to a double.

References StringManager::convert().

◆ attributeAsDoubleList_() [1/2]

DoubleList attributeAsDoubleList_ ( const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Converts an attribute to a DoubleList.

References String::substr().

◆ attributeAsDoubleList_() [2/2]

DoubleList attributeAsDoubleList_ ( const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Converts an attribute to a DoubleList.

References String::substr().

◆ attributeAsInt_() [1/2]

Int attributeAsInt_ ( const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Converts an attribute to a Int.

References StringManager::convertPtr().

◆ attributeAsInt_() [2/2]

Int attributeAsInt_ ( const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Converts an attribute to a Int.

References StringManager::convert().

◆ attributeAsIntList_() [1/2]

IntList attributeAsIntList_ ( const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Converts an attribute to an IntList.

References String::substr().

◆ attributeAsIntList_() [2/2]

IntList attributeAsIntList_ ( const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Converts an attribute to a IntList.

References String::substr().

◆ attributeAsString_() [1/2]

String attributeAsString_ ( const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Converts an attribute to a String.

References StringManager::convert(), and StringManager::convertPtr().

◆ attributeAsString_() [2/2]

String attributeAsString_ ( const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Converts an attribute to a String.

References StringManager::convert().

◆ attributeAsStringList_() [1/2]

StringList attributeAsStringList_ ( const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Converts an attribute to an StringList.

References String::hasSubstring(), and String::substr().

◆ attributeAsStringList_() [2/2]

StringList attributeAsStringList_ ( const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Converts an attribute to a StringList.

References String::hasSubstring(), and String::substr().

◆ characters()

void characters ( const XMLCh *const  chars,
const XMLSize_t  length 
)
override

Parsing method for character data.

◆ checkUniqueIdentifiers_()

void checkUniqueIdentifiers_ ( const std::vector< ProteinIdentification > &  prot_ids) const

throws a ParseError if protIDs are not unique, i.e. PeptideIDs will be randomly assigned (bad!) Should be called before writing any ProtIDs to file

◆ cvParamToValue() [1/2]

DataValue cvParamToValue ( const ControlledVocabulary cv,
const CVTerm raw_term 
) const

Convert the value of a <cvParam value=.> (as commonly found in PSI schemata) to the DataValue with the correct type (e.g. int) according to the type stored in the CV (usually PSI-MS CV), as well as set its unit.

Parameters
cvA CV, usually the PSI-MS CV, see ControlledVocabulary::getPSIMSCV()
raw_termRepresenation of the raw data (i.e. all strings) from a <cvParam ...> without the conversion to a specific value type
Returns
DataValue::EMPTY if a conversion error occured (e.g. if value could not be converted to an integer for an accession which requires an integer) or the DataValue upon success

◆ cvParamToValue() [2/2]

DataValue cvParamToValue ( const ControlledVocabulary cv,
const String parent_tag,
const String accession,
const String name,
const String value,
const String unit_accession 
) const

Convert the value of a <cvParam value=.> (as commonly found in PSI schemata) to the DataValue with the correct type (e.g. int) according to the type stored in the CV (usually PSI-MS CV), as well as set its unit.

Parameters
cvA CV, usually the PSI-MS CV, see ControlledVocabulary::getPSIMSCV()
parent_tagThe tag which encloses the <cvParam>
accessionThe accession from the 'accession' attribute of the <cvParam>
nameThe name from the 'name' attribute of the <cvParam>
valueThe value from the 'value' attribute of the <cvParam>
unit_accessionThe unit_accession from the 'unitAccession' attribute of the <cvParam>
Returns
DataValue::EMPTY if a conversion error occured (e.g. if value could not be converted to an integer for an accession which requires an integer) or the DataValue upon success

◆ cvStringToEnum_()

SignedSize cvStringToEnum_ ( const Size  section,
const String term,
const char *  message,
const SignedSize  result_on_error = 0 
)
protected

Converts term to the index of the term in the cv_terms_ entry section If the term is not found, result_on_error is returned (0 by default)

◆ endElement()

void endElement ( const XMLCh *const  uri,
const XMLCh *const  localname,
const XMLCh *const  qname 
)
override

Parsing method for closing tags.

◆ equal_()

bool equal_ ( const XMLCh *  a,
const XMLCh *  b 
) const
inlineprotected

Returns if two Xerces strings are equal.

◆ error() [1/2]

void error ( ActionMode  mode,
const String msg,
UInt  line = 0,
UInt  column = 0 
) const

Error handler for recoverable errors.

◆ error() [2/2]

void error ( const xercesc::SAXParseException &  exception)
override

◆ expectList_()

const String& expectList_ ( const String str) const
inlineprivate

◆ fatalError() [1/2]

void fatalError ( ActionMode  mode,
const String msg,
UInt  line = 0,
UInt  column = 0 
) const

Fatal error handler. Throws a ParseError exception.

◆ fatalError() [2/2]

void fatalError ( const xercesc::SAXParseException &  exception)
override

◆ fromXSDString()

static DataValue fromXSDString ( const String type,
const String value 
)
inlinestatic

Convert an XSD type (e.g. 'xsd:double') to a DataValue.

Not all conversions are supported yet, due to DataValue using an Int64 as the largest possible integer. Thus, if the value contains a large UInt64, conversion will fail. Value ranges are currently also not checked, only for XSD types which happen to match the internal representation.

Parameters
typeAn XSD type. If the type is not supported, the returned type will be a string
valueThe value in sting format, e.g. "123.34"
Returns
The Datavalue with the respective type (double, int or string)
Exceptions
Exception::ConversionErrorif the value does not fit into the internal representation or (for few types) exceeds the XSD specs.

References String::toDouble(), String::toInt32(), and String::toInt64().

◆ getLoadDetail()

virtual LOADDETAIL getLoadDetail ( ) const
virtual

handler which support partial loading, implement this method

Reimplemented in MzXMLHandler, and MzMLHandler.

◆ optionalAttributeAsDouble_() [1/2]

bool optionalAttributeAsDouble_ ( double &  value,
const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Assigns the attribute content to the double value if the attribute is present.

Returns
if the attribute was present

References StringManager::convert(), StringManager::convertPtr(), and String::toDouble().

◆ optionalAttributeAsDouble_() [2/2]

bool optionalAttributeAsDouble_ ( double &  value,
const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Assigns the attribute content to the double value if the attribute is present.

References StringManager::convert().

◆ optionalAttributeAsDoubleList_() [1/2]

bool optionalAttributeAsDoubleList_ ( DoubleList value,
const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Assigns the attribute content to the DoubleList value if the attribute is present.

Returns
if the attribute was present

References StringManager::convertPtr().

◆ optionalAttributeAsDoubleList_() [2/2]

bool optionalAttributeAsDoubleList_ ( DoubleList value,
const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Assigns the attribute content to the DoubleList value if the attribute is present.

Returns
if the attribute was present

◆ optionalAttributeAsInt_() [1/2]

bool optionalAttributeAsInt_ ( Int value,
const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Assigns the attribute content to the Int value if the attribute is present.

Returns
if the attribute was present

References StringManager::convertPtr().

◆ optionalAttributeAsInt_() [2/2]

bool optionalAttributeAsInt_ ( Int value,
const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Assigns the attribute content to the Int value if the attribute is present.

◆ optionalAttributeAsIntList_() [1/2]

bool optionalAttributeAsIntList_ ( IntList value,
const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Assigns the attribute content to the IntList value if the attribute is present.

Returns
if the attribute was present

References StringManager::convertPtr().

◆ optionalAttributeAsIntList_() [2/2]

bool optionalAttributeAsIntList_ ( IntList value,
const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Assigns the attribute content to the IntList value if the attribute is present.

Returns
if the attribute was present

◆ optionalAttributeAsString_() [1/2]

bool optionalAttributeAsString_ ( String value,
const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Assigns the attribute content to the String value if the attribute is present.

Returns
if the attribute was present

References StringManager::convert(), and StringManager::convertPtr().

◆ optionalAttributeAsString_() [2/2]

bool optionalAttributeAsString_ ( String value,
const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Assigns the attribute content to the String value if the attribute is present.

References StringManager::convert().

◆ optionalAttributeAsStringList_() [1/2]

bool optionalAttributeAsStringList_ ( StringList value,
const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Assigns the attribute content to the StringList value if the attribute is present.

Returns
if the attribute was present

References StringManager::convertPtr().

◆ optionalAttributeAsStringList_() [2/2]

bool optionalAttributeAsStringList_ ( StringList value,
const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Assigns the attribute content to the StringList value if the attribute is present.

Returns
if the attribute was present

◆ optionalAttributeAsUInt_() [1/2]

bool optionalAttributeAsUInt_ ( UInt value,
const xercesc::Attributes &  a,
const char *  name 
) const
inlineprotected

Assigns the attribute content to the UInt value if the attribute is present.

Returns
if the attribute was present

References StringManager::convertPtr().

◆ optionalAttributeAsUInt_() [2/2]

bool optionalAttributeAsUInt_ ( UInt value,
const xercesc::Attributes &  a,
const XMLCh *  name 
) const
inlineprotected

Assigns the attribute content to the UInt value if the attribute is present.

◆ reset()

void reset ( )

Release internal memory used for parsing (call.

◆ setLoadDetail()

virtual void setLoadDetail ( const LOADDETAIL  d)
virtual

handler which support partial loading, implement this method

Reimplemented in MzXMLHandler, and MzMLHandler.

◆ startElement()

void startElement ( const XMLCh *const  uri,
const XMLCh *const  localname,
const XMLCh *const  qname,
const xercesc::Attributes &  attrs 
)
override

Parsing method for opening tags.

◆ warning() [1/2]

void warning ( ActionMode  mode,
const String msg,
UInt  line = 0,
UInt  column = 0 
) const

Warning handler.

◆ warning() [2/2]

void warning ( const xercesc::SAXParseException &  exception)
override

◆ writeTo()

virtual void writeTo ( std::ostream &  )
virtual

◆ writeUserParam_()

void writeUserParam_ ( const String tag_name,
std::ostream &  os,
const MetaInfoInterface meta,
UInt  indent 
) const
protected

Writes the content of MetaInfoInterface to the file.

◆ writeXMLEscape()

static String writeXMLEscape ( const String to_escape)
inlinestatic

Escapes a string and returns the escaped string.

Some characters must be escaped which are allowed in user params. E.g. > and & are not in XML and need to be escaped. Parsing those escaped strings from file again is automatically done by Xerces. Escaped characters are: & < > " '

References String::has(), and String::substitute().

Member Data Documentation

◆ cv_terms_

std::vector<std::vector<String> > cv_terms_
protected

Array of CV term lists (one sublist denotes one term and it's children)

◆ file_

String file_
protected

File name.

◆ load_detail_

LOADDETAIL load_detail_
protected

parse only until total number of scans and chroms have been determined from attributes

◆ open_tags_

std::vector<String> open_tags_
protected

Stack of open XML tags.

This member is used only in those XML parsers that need this information.

◆ sm_

StringManager sm_
protected

Helper class for string conversion.

◆ version_

String version_
protected

Schema version.