45 #include <xercesc/util/XMLString.hpp>
46 #include <xercesc/sax2/DefaultHandler.hpp>
47 #include <xercesc/sax2/Attributes.hpp>
56 class ProteinIdentification;
57 class MetaInfoInterface;
62 #define CONST_XMLCH(s) reinterpret_cast<const ::XMLCh*>(u ## s)
64 static_assert(
sizeof(::XMLCh) ==
sizeof(char16_t),
65 "XMLCh is not sized correctly for UTF-16.");
79 if (
nullptr == item->getOwnerDocument())
93 : item_(item, doRelease_ )
109 item_.reset(item, doRelease_ );
123 return (
nullptr == item_.get());
127 template <
typename T>
137 if (
nullptr == item->getOwnerDocument())
173 std::swap(item_, other.item_);
217 return (
nullptr == item_);
246 return fromNative_(str.c_str());
258 return toNative_(str.
get());
272 return fromNative_(str).get();
278 return fromNative_(str.c_str()).get();
284 return fromNative_(str.c_str()).get();
290 return fromNative_(str);
296 return fromNative_(str.c_str());
302 return fromNative_(str.c_str());
308 return toNative_(str);
325 public xercesc::DefaultHandler
335 Exception::BaseException(file, line, function)
352 LD_COUNTS_WITHOPTIONS
384 void characters(
const XMLCh *
const chars,
const XMLSize_t length)
override;
386 void startElement(
const XMLCh *
const uri,
const XMLCh *
const localname,
const XMLCh *
const qname,
const xercesc::Attributes & attrs)
override;
388 void endElement(
const XMLCh *
const uri,
const XMLCh *
const localname,
const XMLCh *
const qname)
override;
439 if (type ==
"xsd:double" || type ==
"xsd:float" || type ==
"xsd:decimal")
444 else if (type ==
"xsd:byte" ||
446 type ==
"xsd:unsignedShort" ||
447 type ==
"xsd:short" ||
448 type ==
"xsd:unsignedByte" || type ==
"xsd:unsignedInt")
453 else if (type ==
"xsd:long" || type ==
"xsd:unsignedLong" ||
454 type ==
"xsd:integer" || type ==
"xsd:negativeInteger" ||
455 type ==
"xsd:nonNegativeInteger" || type ==
"xsd:nonPositiveInteger" || type ==
"xsd:positiveInteger")
496 inline bool equal_(
const XMLCh * a,
const XMLCh * b)
const
498 return xercesc::XMLString::compareString(a, b) == 0;
534 error(LOAD,
String(
"Int conversion error of \"") + in +
"\"");
542 return xercesc::XMLString::parseInt(in);
560 error(LOAD,
String(
"UInt conversion error of \"") + in +
"\"");
575 error(LOAD,
String(
"Double conversion error of \"") + in +
"\"");
590 error(LOAD,
String(
"Float conversion error of \"") + in +
"\"");
604 if (in ==
"true" || in ==
"TRUE" || in ==
"True" || in ==
"1")
608 else if (in ==
"false" || in ==
"FALSE" || in ==
"False" || in ==
"0")
614 error(LOAD,
String(
"Boolean conversion error of \"") + in +
"\"");
623 if (!date_string.empty())
629 date_string = date_string.
substr(0, 19);
630 date_time.
set(date_string);
634 error(LOAD,
String(
"DateTime conversion error of \"") + date_string +
"\"");
648 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
649 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + name +
"' not present!");
656 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
657 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + name +
"' not present!");
658 return xercesc::XMLString::parseInt(val);
664 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
665 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + name +
"' not present!");
672 String tmp(expectList_(attributeAsString_(a, name)));
673 return ListUtils::create<double>(tmp.
substr(1, tmp.size() - 2));
679 String tmp(expectList_(attributeAsString_(a, name)));
680 return ListUtils::create<Int>(tmp.
substr(1, tmp.size() - 2));
686 String tmp(expectList_(attributeAsString_(a, name)));
687 StringList tmp_list = ListUtils::create<String>(tmp.
substr(1, tmp.size() - 2));
691 for (
String& s : tmp_list)
693 s.substitute(
"\\|",
",");
706 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
722 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
725 value = xercesc::XMLString::parseInt(val);
738 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
741 value = xercesc::XMLString::parseInt(val);
754 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
770 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
773 value = attributeAsDoubleList_(a, name);
786 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
789 value = attributeAsStringList_(a, name);
802 const XMLCh * val = a.getValue(sm_.
convertPtr(name).get());
805 value = attributeAsIntList_(a, name);
814 const XMLCh * val = a.getValue(name);
815 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + sm_.
convert(name) +
"' not present!");
822 const XMLCh * val = a.getValue(name);
823 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + sm_.
convert(name) +
"' not present!");
824 return xercesc::XMLString::parseInt(val);
830 const XMLCh * val = a.getValue(name);
831 if (val ==
nullptr) fatalError(LOAD,
String(
"Required attribute '") + sm_.
convert(name) +
"' not present!");
832 return sm_.
convert(val).toDouble();
838 String tmp(expectList_(attributeAsString_(a, name)));
839 return ListUtils::create<double>(tmp.
substr(1, tmp.size() - 2));
845 String tmp(expectList_(attributeAsString_(a, name)));
846 return ListUtils::create<Int>(tmp.
substr(1, tmp.size() - 2));
852 String tmp(expectList_(attributeAsString_(a, name)));
853 StringList tmp_list = ListUtils::create<String>(tmp.
substr(1, tmp.size() - 2));
857 for (
String& s : tmp_list)
859 s.substitute(
"\\|",
",");
868 const XMLCh * val = a.getValue(name);
872 return !value.empty();
880 const XMLCh * val = a.getValue(name);
883 value = xercesc::XMLString::parseInt(val);
892 const XMLCh * val = a.getValue(name);
895 value = xercesc::XMLString::parseInt(val);
904 const XMLCh * val = a.getValue(name);
907 value = sm_.
convert(val).toDouble();
920 const XMLCh * val = a.getValue(name);
923 value = attributeAsDoubleList_(a, name);
936 const XMLCh * val = a.getValue(name);
939 value = attributeAsIntList_(a, name);
952 const XMLCh * val = a.getValue(name);
955 value = attributeAsStringList_(a, name);
971 fatalError(LOAD,
String(
"List argument is not a string representation of a list!"));
Class to hold strings, numeric values, lists of strings and lists of numeric values.
Definition: DataValue.h:59
DateTime Class.
Definition: DateTime.h:59
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:91
Invalid conversion exception.
Definition: Exception.h:356
Parse Error exception.
Definition: Exception.h:624
Definition: XMLHandler.h:233
static unique_xerces_ptr< XMLCh > convertPtr(const String &str)
Transcode the supplied OpenMS string to a xerces string pointer.
Definition: XMLHandler.h:300
static XercesString convert(const String &str)
Transcode the supplied OpenMS string to a xerces string.
Definition: XMLHandler.h:282
static unique_xerces_ptr< XMLCh > convertPtr(const char *str)
Transcode the supplied C string to a xerces string pointer.
Definition: XMLHandler.h:288
static unique_xerces_ptr< XMLCh > fromNative_(const String &str)
Definition: XMLHandler.h:244
static String convert(const XMLCh *str)
Transcode the supplied XMLCh* to a String.
Definition: XMLHandler.h:306
static String toNative_(const XMLCh *str)
Definition: XMLHandler.h:250
std::basic_string< XMLCh > XercesString
Definition: XMLHandler.h:235
static unique_xerces_ptr< XMLCh > fromNative_(const char *str)
Definition: XMLHandler.h:238
~StringManager()
Destructor.
static XercesString convert(const std::string &str)
Transcode the supplied C++ string to a xerces string.
Definition: XMLHandler.h:276
static XercesString convert(const char *str)
Transcode the supplied C string to a xerces string.
Definition: XMLHandler.h:270
static String toNative_(const unique_xerces_ptr< XMLCh > &str)
Definition: XMLHandler.h:256
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:294
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:332
EndParsingSoftly(const char *file, int line, const char *function)
Definition: XMLHandler.h:334
Base class for XML handlers.
Definition: XMLHandler.h:326
IntList attributeAsIntList_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a IntList.
Definition: XMLHandler.h:843
String errorString()
Returns the last error description.
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:489
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:878
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:784
LOADDETAIL load_detail_
parse only until total number of scans and chroms have been determined from attributes
Definition: XMLHandler.h:492
Int asInt_(const String &in) const
Conversion of a String to an integer value.
Definition: XMLHandler.h:525
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:866
StringList attributeAsStringList_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a StringList.
Definition: XMLHandler.h:850
DoubleList attributeAsDoubleList_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a DoubleList.
Definition: XMLHandler.h:836
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:736
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:602
String file_
File name.
Definition: XMLHandler.h:476
static DataValue fromXSDString(const String &type, const String &value)
Convert an XSD type (e.g. 'xsd:double') to a DataValue.
Definition: XMLHandler.h:435
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:934
String version_
Schema version.
Definition: XMLHandler.h:479
LOADDETAIL
Definition: XMLHandler.h:349
@ LD_RAWCOUNTS
Definition: XMLHandler.h:351
@ LD_ALLDATA
Definition: XMLHandler.h:350
bool equal_(const XMLCh *a, const XMLCh *b) const
Returns if two Xerces strings are equal.
Definition: XMLHandler.h:496
String error_message_
Error message of the last error.
Definition: XMLHandler.h:473
UInt asUInt_(const String &in) const
Conversion of a String to an unsigned integer value.
Definition: XMLHandler.h:546
String attributeAsString_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a String.
Definition: XMLHandler.h:646
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:950
StringList attributeAsStringList_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to an StringList.
Definition: XMLHandler.h:684
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:513
ActionMode
Action to set the current mode (for error messages)
Definition: XMLHandler.h:343
@ LOAD
Loading a file.
Definition: XMLHandler.h:344
DoubleList attributeAsDoubleList_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a DoubleList.
Definition: XMLHandler.h:670
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:902
Int attributeAsInt_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a Int.
Definition: XMLHandler.h:820
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:540
Int attributeAsInt_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a Int.
Definition: XMLHandler.h:654
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:890
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:918
IntList attributeAsIntList_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to an IntList.
Definition: XMLHandler.h:677
StringManager sm_
Helper class for string conversion.
Definition: XMLHandler.h:482
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:409
double attributeAsDouble_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a double.
Definition: XMLHandler.h:662
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:752
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:768
String attributeAsString_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a String.
Definition: XMLHandler.h:812
void reset()
Release internal memory used for parsing (call.
const String & expectList_(const String &str) const
Definition: XMLHandler.h:967
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:620
double attributeAsDouble_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a double.
Definition: XMLHandler.h:828
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:704
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:800
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:720
double asDouble_(const String &in) const
Conversion of a String to a double value.
Definition: XMLHandler.h:566
void error(const xercesc::SAXParseException &exception) override
float asFloat_(const String &in) const
Conversion of a String to a float value.
Definition: XMLHandler.h:581
Definition: XMLHandler.h:73
std::shared_ptr< T > item_
Definition: XMLHandler.h:87
static void doRelease_(char *item)
shared_xerces_ptr(T *item)
Definition: XMLHandler.h:92
static void doRelease_(XMLCh *item)
bool is_released() const
Definition: XMLHandler.h:121
static void doRelease_(U *item)
Definition: XMLHandler.h:76
T * get()
Definition: XMLHandler.h:112
const T * get() const
Definition: XMLHandler.h:116
void assign(T *item)
Definition: XMLHandler.h:107
shared_xerces_ptr()=default
void reset()
Definition: XMLHandler.h:102
shared_xerces_ptr & operator=(T *item)
Definition: XMLHandler.h:96
Definition: XMLHandler.h:129
T * item_
Definition: XMLHandler.h:144
unique_xerces_ptr & operator=(const unique_xerces_ptr< T > &)=delete
void operator=(T *i)
Definition: XMLHandler.h:177
void xerces_release()
Definition: XMLHandler.h:183
unique_xerces_ptr(T *i)
Definition: XMLHandler.h:156
void swap(unique_xerces_ptr< T > &other) noexcept
Definition: XMLHandler.h:171
void assign(T *i)
Definition: XMLHandler.h:202
static void doRelease_(XMLCh *&item)
bool is_released() const
Definition: XMLHandler.h:215
T * get() const
Definition: XMLHandler.h:209
unique_xerces_ptr()
Definition: XMLHandler.h:152
unique_xerces_ptr(unique_xerces_ptr< T > &&other) noexcept
Definition: XMLHandler.h:165
unique_xerces_ptr(const unique_xerces_ptr< T > &)=delete
static void doRelease_(char *&item)
~unique_xerces_ptr()
Definition: XMLHandler.h:160
T * yield()
Definition: XMLHandler.h:194
static void doRelease_(U *&item)
Definition: XMLHandler.h:133
A more convenient string class.
Definition: String.h:60
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:102
unsigned int UInt
Unsigned integer type.
Definition: Types.h:94
ptrdiff_t SignedSize
Signed Size type e.g. used as pointer difference.
Definition: Types.h:134
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
std::vector< Int > IntList
Vector of signed integers.
Definition: ListUtils.h:55
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:70
std::vector< double > DoubleList
Vector of double precision real types.
Definition: ListUtils.h:62
int exception
(Used by various macros. Indicates a rough category of the exception being caught....
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:48