diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-04-28 20:59:38 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-04-28 20:59:38 (GMT) |
commit | 3d3f434c5be68a7e2b86ecccbaba40887852db99 (patch) | |
tree | e9378262ad68305f5add6f27a4338c21033bc5e1 /src/uscxml/Message.cpp | |
parent | 3b7be6b309e3a446e64f99511806c0ea7a440b8e (diff) | |
download | uscxml-3d3f434c5be68a7e2b86ecccbaba40887852db99.zip uscxml-3d3f434c5be68a7e2b86ecccbaba40887852db99.tar.gz uscxml-3d3f434c5be68a7e2b86ecccbaba40887852db99.tar.bz2 |
More work on prolog datamodel
Diffstat (limited to 'src/uscxml/Message.cpp')
-rw-r--r-- | src/uscxml/Message.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/uscxml/Message.cpp b/src/uscxml/Message.cpp index 27e01e2..67198ea 100644 --- a/src/uscxml/Message.cpp +++ b/src/uscxml/Message.cpp @@ -308,6 +308,30 @@ Data Data::fromJSON(const std::string& jsonString) { return data; } +void Event::initContent(const std::string& content) { + // try to parse as JSON + Data json = Data::fromJSON(content); + if (json) { + data = json; + return; + } + + // try to parse as XML + Arabica::SAX2DOM::Parser<std::string> parser; + Arabica::SAX::CatchErrorHandler<std::string> errorHandler; + parser.setErrorHandler(errorHandler); + + std::istringstream is(content); + Arabica::SAX::InputSource<std::string> inputSource; + inputSource.setByteStream(is); + if (parser.parse(inputSource)) { + dom = parser.getDocument(); + return; + } + + this->content = content; +} + Event Event::fromXML(const std::string& xmlString) { Arabica::SAX2DOM::Parser<std::string> eventParser; Arabica::SAX::CatchErrorHandler<std::string> errorHandler; |