X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fdiameter%2Fcodec%2FMessage.cpp;h=a686c71dcf33e327eaaa840ed7704395032f1f85;hb=8a597c7ccbe2986f505fd70258e4b59ecef4166f;hp=cdbd7bcb273e616dc43e751d4f8ce5bd0a59b3e5;hpb=57040efdece4ea1f4487608de3d1afbb9d1378c8;p=anna.git diff --git a/source/diameter/codec/Message.cpp b/source/diameter/codec/Message.cpp index cdbd7bc..a686c71 100644 --- a/source/diameter/codec/Message.cpp +++ b/source/diameter/codec/Message.cpp @@ -761,9 +761,9 @@ const anna::DataBlock & Message::code() throw(anna::RuntimeException) { } //------------------------------------------------------------------------------ -//----------------------------------------------------------- Message::loadXML() +//------------------------------------------------------- Message::loadXMLFile() //------------------------------------------------------------------------------ -void Message::loadXML(const std::string &xmlPathFile) throw(anna::RuntimeException) { +void Message::loadXMLFile(const std::string &xmlPathFile) throw(anna::RuntimeException) { anna::xml::DocumentFile xmlDocument; anna::diameter::codec::functions::messageXmlDocumentFromXmlFile(xmlDocument, xmlPathFile); @@ -998,9 +998,16 @@ anna::xml::Node* Message::asXML(anna::xml::Node* parent) const throw() { //------------------------------------------------------------------------------ //------------------------------------------------------- Message::asXMLString() //------------------------------------------------------------------------------ -std::string Message::asXMLString() const throw() { +std::string Message::asXMLString(bool normalize) const throw() { anna::xml::Node root("root"); - return anna::xml::Compiler().apply(asXML(&root)); + + anna::xml::Compiler::Mode::_v mode = normalize ? anna::xml::Compiler::Mode::Sort : anna::xml::Compiler::Mode::Visual; + std::string result = anna::xml::Compiler().apply(asXML(&root), mode); + + if (normalize) + result.erase(std::remove(result.begin(), result.end(), '\n'), result.end()); + + return result; } @@ -1009,5 +1016,6 @@ std::string Message::asXMLString() const throw() { //------------------------------------------------------------------------------ bool Message::isLike(const std::string &pattern) const throw() { anna::RegularExpression re(pattern); - return re.isLike(asXMLString()); + return re.isLike(asXMLString(true /* normalize by mean sorting attribute names and removing new lines */)); } +