19 #include <xercesc/sax2/Attributes.hpp>
20 #include <xercesc/sax2/DefaultHandler.hpp>
21 #include <xercesc/util/XMLString.hpp>
30 class ControlledVocabulary;
32 class MetaInfoInterface;
33 class ProteinIdentification;
38 #define CONST_XMLCH(s) reinterpret_cast<const ::XMLCh*>(u ## s)
40 static_assert(
sizeof(::XMLCh) ==
sizeof(char16_t),
41 "XMLCh is not sized correctly for UTF-16.");
55 if (
nullptr == item->getOwnerDocument())
69 : item_(item, doRelease_ )
85 item_.reset(item, doRelease_ );
99 return (
nullptr == item_.get());
103 template <
typename T>
113 if (
nullptr == item->getOwnerDocument())
149 std::swap(item_, other.item_);
193 return (
nullptr == item_);
222 return fromNative_(str.c_str());
234 return toNative_(str.
get());
248 return fromNative_(str).get();
254 return fromNative_(str.c_str()).get();
260 return fromNative_(str.c_str()).get();
266 return fromNative_(str);
272 return fromNative_(str.c_str());
278 return fromNative_(str.c_str());
284 return toNative_(str);
301 public xercesc::DefaultHandler
311 Exception::BaseException(file, line, function)
328 LD_COUNTS_WITHOPTIONS
360 void characters(
const XMLCh *
const chars,
const XMLSize_t length)
override;
362 void startElement(
const XMLCh *
const uri,
const XMLCh *
const localname,
const XMLCh *
const qname,
const xercesc::Attributes & attrs)
override;
364 void endElement(
const XMLCh *
const uri,
const XMLCh *
const localname,
const XMLCh *
const qname)
override;
412 if (type ==
"xsd:double" || type ==
"xsd:float" || type ==
"xsd:decimal")
417 else if (type ==
"xsd:byte" ||
419 type ==
"xsd:unsignedShort" ||
420 type ==
"xsd:short" ||
421 type ==
"xsd:unsignedByte" || type ==
"xsd:unsignedInt")
426 else if (type ==
"xsd:long" || type ==
"xsd:unsignedLong" ||
427 type ==
"xsd:integer" || type ==
"xsd:negativeInteger" ||
428 type ==
"xsd:nonNegativeInteger" || type ==
"xsd:nonPositiveInteger" || type ==
"xsd:positiveInteger")
456 const String& unit_accession)
const;
494 inline bool equal_(
const XMLCh * a,
const XMLCh * b)
const
496 return xercesc::XMLString::compareString(a, b) == 0;
532 error(LOAD,
String(
"Int conversion error of \"") + in +
"\"");
540 return xercesc::XMLString::parseInt(in);
558 error(LOAD,
String(
"UInt conversion error of \"") + in +
"\"");
573 error(LOAD,
String(
"Double conversion error of \"") + in +
"\"");
588 error(LOAD,
String(
"Float conversion error of \"") + in +
"\"");
602 if (in ==
"true" || in ==
"TRUE" || in ==
"True" || in ==
"1")
606 else if (in ==
"false" || in ==
"FALSE" || in ==
"False" || in ==
"0")
612 error(LOAD,
String(
"Boolean conversion error of \"") + in +
"\"");
621 if (!date_string.empty())
627 date_string = date_string.
substr(0, 19);
628 date_time.
set(date_string);
632 error(LOAD,
String(
"DateTime conversion error of \"") + date_string +
"\"");
646 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
647 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + name +
"' not present!");
654 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
655 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + name +
"' not present!");
656 return xercesc::XMLString::parseInt(val);
662 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
663 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + name +
"' not present!");
670 String tmp(expectList_(attributeAsString_(a, name)));
671 return ListUtils::create<double>(tmp.
substr(1, tmp.size() - 2));
677 String tmp(expectList_(attributeAsString_(a, name)));
678 return ListUtils::create<Int>(tmp.
substr(1, tmp.size() - 2));
684 String tmp(expectList_(attributeAsString_(a, name)));
685 StringList tmp_list = ListUtils::create<String>(tmp.
substr(1, tmp.size() - 2));
689 for (
String& s : tmp_list)
691 s.substitute(
"\\|",
",");
704 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
720 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
723 value = xercesc::XMLString::parseInt(val);
736 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
739 value = xercesc::XMLString::parseInt(val);
752 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
768 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
771 value = attributeAsDoubleList_(a, name);
784 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
787 value = attributeAsStringList_(a, name);
800 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
803 value = attributeAsIntList_(a, name);
812 const XMLCh * val = a.getValue(name);
813 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + sm_.
convert(name) +
"' not present!");
820 const XMLCh * val = a.getValue(name);
821 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + sm_.
convert(name) +
"' not present!");
822 return xercesc::XMLString::parseInt(val);
828 const XMLCh * val = a.getValue(name);
829 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + sm_.
convert(name) +
"' not present!");
830 return sm_.
convert(val).toDouble();
836 String tmp(expectList_(attributeAsString_(a, name)));
837 return ListUtils::create<double>(tmp.
substr(1, tmp.size() - 2));
843 String tmp(expectList_(attributeAsString_(a, name)));
844 return ListUtils::create<Int>(tmp.
substr(1, tmp.size() - 2));
850 String tmp(expectList_(attributeAsString_(a, name)));
851 StringList tmp_list = ListUtils::create<String>(tmp.
substr(1, tmp.size() - 2));
855 for (
String& s : tmp_list)
857 s.substitute(
"\\|",
",");
866 const XMLCh * val = a.getValue(name);
870 return !value.empty();
878 const XMLCh * val = a.getValue(name);
881 value = xercesc::XMLString::parseInt(val);
890 const XMLCh * val = a.getValue(name);
893 value = xercesc::XMLString::parseInt(val);
902 const XMLCh * val = a.getValue(name);
905 value = sm_.
convert(val).toDouble();
918 const XMLCh * val = a.getValue(name);
921 value = attributeAsDoubleList_(a, name);
934 const XMLCh * val = a.getValue(name);
937 value = attributeAsIntList_(a, name);
950 const XMLCh * val = a.getValue(name);
953 value = attributeAsStringList_(a, name);
969 fatalError(LOAD,
String(
"List argument is not a string representation of a list!"));
Representation of controlled vocabulary term.
Definition: CVTerm.h:27
Representation of a controlled vocabulary.
Definition: ControlledVocabulary.h:29
Class to hold strings, numeric values, lists of strings and lists of numeric values.
Definition: DataValue.h:33
DateTime Class.
Definition: DateTime.h:33
void set(UInt month, UInt day, UInt year, UInt hour, UInt minute, UInt second)
sets data from six integers
Exception base class.
Definition: Exception.h:63
Invalid conversion exception.
Definition: Exception.h:313
Parse Error exception.
Definition: Exception.h:562
Definition: XMLHandler.h:209
static unique_xerces_ptr< XMLCh > convertPtr(const String &str)
Transcode the supplied OpenMS string to a xerces string pointer.
Definition: XMLHandler.h:276
static XercesString convert(const String &str)
Transcode the supplied OpenMS string to a xerces string.
Definition: XMLHandler.h:258
static unique_xerces_ptr< XMLCh > convertPtr(const char *str)
Transcode the supplied C string to a xerces string pointer.
Definition: XMLHandler.h:264
static unique_xerces_ptr< XMLCh > fromNative_(const String &str)
Definition: XMLHandler.h:220
static String convert(const XMLCh *str)
Transcode the supplied XMLCh* to a String.
Definition: XMLHandler.h:282
static String toNative_(const XMLCh *str)
Definition: XMLHandler.h:226
std::basic_string< XMLCh > XercesString
Definition: XMLHandler.h:211
static unique_xerces_ptr< XMLCh > fromNative_(const char *str)
Definition: XMLHandler.h:214
~StringManager()
Destructor.
static XercesString convert(const std::string &str)
Transcode the supplied C++ string to a xerces string.
Definition: XMLHandler.h:252
static XercesString convert(const char *str)
Transcode the supplied C string to a xerces string.
Definition: XMLHandler.h:246
static String toNative_(const unique_xerces_ptr< XMLCh > &str)
Definition: XMLHandler.h:232
StringManager()
Constructor.
static void appendASCII(const XMLCh *str, const XMLSize_t length, String &result)
Transcodes the supplied XMLCh* and appends it to the OpenMS String.
static unique_xerces_ptr< XMLCh > convertPtr(const std::string &str)
Transcode the supplied C++ string to a xerces string pointer.
Definition: XMLHandler.h:270
Exception that is thrown if the parsing is ended by some event (e.g. if only a prefix of the XML file...
Definition: XMLHandler.h:308
EndParsingSoftly(const char *file, int line, const char *function)
Definition: XMLHandler.h:310
Base class for XML handlers.
Definition: XMLHandler.h:302
IntList attributeAsIntList_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a IntList.
Definition: XMLHandler.h:841
virtual LOADDETAIL getLoadDetail() const
handler which support partial loading, implement this method
std::vector< String > open_tags_
Stack of open XML tags.
Definition: XMLHandler.h:487
void startElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const xercesc::Attributes &attrs) override
Parsing method for opening tags.
void warning(const xercesc::SAXParseException &exception) override
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.
Definition: XMLHandler.h:876
XMLHandler(const String &filename, const String &version)
Default constructor.
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.
Definition: XMLHandler.h:782
LOADDETAIL load_detail_
parse only until total number of scans and chroms have been determined from attributes
Definition: XMLHandler.h:490
Int asInt_(const String &in) const
Conversion of a String to an integer value.
Definition: XMLHandler.h:523
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.
Definition: XMLHandler.h:864
StringList attributeAsStringList_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a StringList.
Definition: XMLHandler.h:848
DoubleList attributeAsDoubleList_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a DoubleList.
Definition: XMLHandler.h:834
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.
Definition: XMLHandler.h:734
virtual void setLoadDetail(const LOADDETAIL d)
handler which support partial loading, implement this method
void checkUniqueIdentifiers_(const std::vector< ProteinIdentification > &prot_ids) const
XMLHandler()
Not implemented.
void endElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname) override
Parsing method for closing tags.
bool asBool_(const String &in) const
Conversion of a string to a boolean value.
Definition: XMLHandler.h:600
String file_
File name.
Definition: XMLHandler.h:474
static DataValue fromXSDString(const String &type, const String &value)
Convert an XSD type (e.g. 'xsd:double') to a DataValue.
Definition: XMLHandler.h:408
void fatalError(ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
Fatal error handler. Throws a ParseError exception.
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.
Definition: XMLHandler.h:932
String version_
Schema version.
Definition: XMLHandler.h:477
LOADDETAIL
Definition: XMLHandler.h:325
@ LD_RAWCOUNTS
Definition: XMLHandler.h:327
@ LD_ALLDATA
Definition: XMLHandler.h:326
bool equal_(const XMLCh *a, const XMLCh *b) const
Returns if two Xerces strings are equal.
Definition: XMLHandler.h:494
UInt asUInt_(const String &in) const
Conversion of a String to an unsigned integer value.
Definition: XMLHandler.h:544
String attributeAsString_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a String.
Definition: XMLHandler.h:644
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.
Definition: XMLHandler.h:948
StringList attributeAsStringList_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to an StringList.
Definition: XMLHandler.h:682
void warning(ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
Warning handler.
std::vector< std::vector< String > > cv_terms_
Array of CV term lists (one sublist denotes one term and it's children)
Definition: XMLHandler.h:511
ActionMode
Action to set the current mode (for error messages)
Definition: XMLHandler.h:319
@ LOAD
Loading a file.
Definition: XMLHandler.h:320
DoubleList attributeAsDoubleList_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a DoubleList.
Definition: XMLHandler.h:668
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.
Definition: XMLHandler.h:900
Int attributeAsInt_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a Int.
Definition: XMLHandler.h:818
void writeUserParam_(const String &tag_name, std::ostream &os, const MetaInfoInterface &meta, UInt indent) const
Writes the content of MetaInfoInterface to the file.
Int asInt_(const XMLCh *in) const
Conversion of a Xerces string to an integer value.
Definition: XMLHandler.h:538
Int attributeAsInt_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a Int.
Definition: XMLHandler.h:652
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.
Definition: XMLHandler.h:888
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.
Definition: XMLHandler.h:916
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 t...
IntList attributeAsIntList_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to an IntList.
Definition: XMLHandler.h:675
StringManager sm_
Helper class for string conversion.
Definition: XMLHandler.h:480
void fatalError(const xercesc::SAXParseException &exception) override
static String writeXMLEscape(const String &to_escape)
Escapes a string and returns the escaped string.
Definition: XMLHandler.h:382
double attributeAsDouble_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a double.
Definition: XMLHandler.h:660
SignedSize cvStringToEnum_(const Size section, const String &term, const char *message, const SignedSize result_on_error=0)
~XMLHandler() override
Destructor.
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.
Definition: XMLHandler.h:750
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 t...
virtual void writeTo(std::ostream &)
Writes the contents to a stream.
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.
Definition: XMLHandler.h:766
String attributeAsString_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a String.
Definition: XMLHandler.h:810
void reset()
Release internal memory used for parsing (call.
const String & expectList_(const String &str) const
Definition: XMLHandler.h:965
void characters(const XMLCh *const chars, const XMLSize_t length) override
Parsing method for character data.
void error(ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
Error handler for recoverable errors.
DateTime asDateTime_(String date_string) const
Conversion of a xs:datetime string to a DateTime value.
Definition: XMLHandler.h:618
double attributeAsDouble_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a double.
Definition: XMLHandler.h:826
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.
Definition: XMLHandler.h:702
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.
Definition: XMLHandler.h:798
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.
Definition: XMLHandler.h:718
double asDouble_(const String &in) const
Conversion of a String to a double value.
Definition: XMLHandler.h:564
void error(const xercesc::SAXParseException &exception) override
float asFloat_(const String &in) const
Conversion of a String to a float value.
Definition: XMLHandler.h:579
Definition: XMLHandler.h:49
std::shared_ptr< T > item_
Definition: XMLHandler.h:63
static void doRelease_(char *item)
shared_xerces_ptr(T *item)
Definition: XMLHandler.h:68
static void doRelease_(XMLCh *item)
bool is_released() const
Definition: XMLHandler.h:97
static void doRelease_(U *item)
Definition: XMLHandler.h:52
T * get()
Definition: XMLHandler.h:88
const T * get() const
Definition: XMLHandler.h:92
void assign(T *item)
Definition: XMLHandler.h:83
shared_xerces_ptr()=default
void reset()
Definition: XMLHandler.h:78
shared_xerces_ptr & operator=(T *item)
Definition: XMLHandler.h:72
Definition: XMLHandler.h:105
T * item_
Definition: XMLHandler.h:120
unique_xerces_ptr & operator=(const unique_xerces_ptr< T > &)=delete
void operator=(T *i)
Definition: XMLHandler.h:153
void xerces_release()
Definition: XMLHandler.h:159
unique_xerces_ptr(T *i)
Definition: XMLHandler.h:132
void swap(unique_xerces_ptr< T > &other) noexcept
Definition: XMLHandler.h:147
void assign(T *i)
Definition: XMLHandler.h:178
static void doRelease_(XMLCh *&item)
bool is_released() const
Definition: XMLHandler.h:191
T * get() const
Definition: XMLHandler.h:185
unique_xerces_ptr()
Definition: XMLHandler.h:128
unique_xerces_ptr(unique_xerces_ptr< T > &&other) noexcept
Definition: XMLHandler.h:141
unique_xerces_ptr(const unique_xerces_ptr< T > &)=delete
static void doRelease_(char *&item)
~unique_xerces_ptr()
Definition: XMLHandler.h:136
T * yield()
Definition: XMLHandler.h:170
static void doRelease_(U *&item)
Definition: XMLHandler.h:109
A more convenient string class.
Definition: String.h:34
String substr(size_t pos=0, size_t n=npos) const
Wrapper for the STL substr() method. Returns a String object with its contents initialized to a subst...
bool hasPrefix(const String &string) const
true if String begins with string, false otherwise
bool hasSubstring(const String &string) const
true if String contains the string, false otherwise
Int64 toInt64() const
Conversion to Int64.
bool has(Byte byte) const
true if String contains the byte, false otherwise
Int toInt() const
Conversion to Int.
double toDouble() const
Conversion to double.
Int32 toInt32() const
Conversion to Int32.
String & trim()
removes whitespaces (space, tab, line feed, carriage return) at the beginning and the end of the stri...
String & substitute(char from, char to)
Replaces all occurrences of the character from by the character to.
bool hasSuffix(const String &string) const
true if String ends with string, false otherwise
float toFloat() const
Conversion to float.
int Int
Signed integer type.
Definition: Types.h:76
unsigned int UInt
Unsigned integer type.
Definition: Types.h:68
ptrdiff_t SignedSize
Signed Size type e.g. used as pointer difference.
Definition: Types.h:108
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:101
std::vector< Int > IntList
Vector of signed integers.
Definition: ListUtils.h:29
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:44
std::vector< double > DoubleList
Vector of double precision real types.
Definition: ListUtils.h:36
int exception
(Used by various macros. Indicates a rough category of the exception being caught....
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:22