diff options
Diffstat (limited to 'staging_vespalib')
-rw-r--r-- | staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp | 15 | ||||
-rw-r--r-- | staging_vespalib/src/vespa/vespalib/util/xmlserializable.h | 4 |
2 files changed, 17 insertions, 2 deletions
diff --git a/staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp b/staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp index bced837e3a1..17c5a2e4a68 100644 --- a/staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp +++ b/staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp @@ -374,6 +374,21 @@ XmlAttribute::XmlAttribute(const XmlAttribute& attribute) { } +XmlAttribute::XmlAttribute(const std::string& name, const char * value, uint32_t flags) + : _name(name), + _value(), + _next() +{ + std::ostringstream ost; + if (flags & HEX) ost << std::hex << "0x"; + ost << value; + _value = ost.str(); + if (!isLegalName(name)) { + throw vespalib::IllegalArgumentException("Name '" + name + "' contains " + "illegal XML characters and cannot be used as attribute name"); + } +} + XmlEndTag::XmlEndTag() { } diff --git a/staging_vespalib/src/vespa/vespalib/util/xmlserializable.h b/staging_vespalib/src/vespa/vespalib/util/xmlserializable.h index 8454ea045ee..0c064ebd43f 100644 --- a/staging_vespalib/src/vespa/vespalib/util/xmlserializable.h +++ b/staging_vespalib/src/vespa/vespalib/util/xmlserializable.h @@ -89,8 +89,8 @@ public: XmlAttribute(const XmlAttribute&); /** Add any value that can be written to an ostringstream. */ template<typename T> - XmlAttribute(const std::string& name, const T& value, - uint32_t flags = NONE); + XmlAttribute(const std::string& name, const T& value, uint32_t flags = NONE); + XmlAttribute(const std::string& name, const char * value, uint32_t flags = NONE); ~XmlAttribute(); const std::string& getName() const { return _name; } |