2 #include "xercesc/util/XercesDefs.hpp" 3 #include "xercesc/framework/MemBufInputSource.hpp" 4 #include "xercesc/parsers/XercesDOMParser.hpp" 5 #include "xercesc/sax/SAXParseException.hpp" 6 #include "xercesc/util/TransService.hpp" 7 #include "ace/XML_Utils/XML_Helper.h" 8 #include "ace/XML_Utils/XML_Schema_Resolver.h" 9 #include "ace/XML_Utils/XML_Error_Handler.h" 21 res_(new
XML::XML_Schema_Resolver<
XML::Environment_Resolver>()),
22 eh_(error_handler ? error_handler : new
XML::XML_Error_Handler()),
33 parser_ =
new XercesDOMParser();
36 XMLCh* xmlver = XMLString::transcode(
"XML 1.0");
37 DOMImplementation * domImpl = DOMImplementationRegistry::getDOMImplementation(xmlver);
38 XMLString::release(&xmlver);
42 XMLCh* namespaceURI = XMLString::transcode(
"");
43 XMLCh* qualifiedName = XMLString::transcode(
"temp");
44 finalDoc_ = domImpl->createDocument(namespaceURI, qualifiedName,0);
45 XMLString::release(&namespaceURI);
46 XMLString::release(&qualifiedName);
48 }
catch (
const XMLException& toCatch) {
49 char* message = XMLString::transcode(toCatch.getMessage());
51 ACE_TEXT (
"QOS_XML_String_Handler::QOS_XML_String_Handler - ")
52 ACE_TEXT (
"Error during XML initialization! :\n<%C>\n"),
54 XMLString::release(&message);
66 XMLPlatformUtils::Terminate();
77 TranscodeToStr xmlTranscoded(conv,
"utf-8");
78 XMLString::release(&conv);
79 MemBufInputSource xmlBuf(xmlTranscoded.str(), xmlTranscoded.length() ,
"xml (in memory)");
85 parser_->setDoNamespaces (
true);
87 parser_->setCreateCommentNodes (
false);
96 parser_->setCreateEntityReferenceNodes (
false);
98 parser_->setValidationScheme (xercesc::AbstractDOMParser::Val_Always);
100 parser_->setIncludeIgnorableWhitespace (
false);
107 parser_->setValidationSchemaFullChecking (
true);
109 parser_->setValidationConstraintFatal (
true);
121 catch (
const SAXParseException& toCatch) {
122 char* message = XMLString::transcode(toCatch.getMessage());
124 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
125 ACE_TEXT (
"Exception message is: <%C>\n"),
127 XMLString::release(&message);
130 catch (
const XMLException& toCatch) {
131 char* message = XMLString::transcode(toCatch.getMessage());
133 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
134 ACE_TEXT (
"Exception message is: <%C>\n"),
136 XMLString::release(&message);
139 catch (
const DOMException& toCatch) {
140 char* message = XMLString::transcode(toCatch.getMessage());
142 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
143 ACE_TEXT (
"Exception message is: <%C>\n"),
145 XMLString::release(&message);
150 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
156 DOMDocument * initialDoc =
parser_->getDocument();
162 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
163 ACE_TEXT (
"Failed to parse string\n")
170 XMLCh* ns = XMLString::transcode(
"http://www.omg.org/dds");
171 XMLCh* ddstag = XMLString::transcode(
"dds");
173 DOMNodeList * ddsNodeList = initialDoc->getElementsByTagNameNS(ns, ddstag);
174 XMLString::release(&ns);
175 XMLString::release(&ddstag);
178 if (ddsNodeList->getLength() == 0)
183 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
184 ACE_TEXT (
"Could not find tag(dds) in namespace(http://www.omg.org/dds)\n")
191 DOMNode * ddsNode = ddsNodeList->item(0);
194 char* message = XMLString::transcode(ddsNode->getNodeName());
196 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
199 XMLString::release(&message);
202 DOMNode * clone =
finalDoc_->importNode(ddsNode,
true);
210 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
211 ACE_TEXT (
"Failed to get pointer of imported node\n")
221 (*TSS_ID_Map)->reset ();
229 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
230 ACE_TEXT (
"Caught CORBA exception whilst parsing XML\n"),
237 ACE_TEXT (
"QOS_XML_String_Handler::init - ")
238 ACE_TEXT (
"Unexpected exception whilst parsing XML.\n")
249 res_->get_resolver().add_path(environment,relpath);
const char * c_str(void) const
XERCES_CPP_NAMESPACE::DOMDocument * finalDoc_
DDS::ReturnCode_t init(const ACE_TCHAR *membuf)
#define ACE_TEXT_ALWAYS_CHAR(STRING)
::dds::qosProfile_seq dds(xercesc::DOMDocument const *d)
XERCES_CPP_NAMESPACE::XercesDOMParser * parser_
Parser.
XML::XML_Schema_Resolver< XML::Environment_Resolver > * res_
Schema resolver.
virtual ACE_CString _info(void) const=0
void add_search_path(const ACE_TCHAR *environment, const ACE_TCHAR *relpath)
void Initialize(const CONFIGURATION_RESOURCE configuration_file, RETURN_CODE_TYPE &return_code)
QOS_XML_String_Handler(XML::XML_Error_Handler *error_handler=0)
~QOS_XML_String_Handler()
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
XML::XML_Error_Handler * eh_
Error handler.
::dds::qosProfile_seq profiles_
const ReturnCode_t RETCODE_ERROR
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
const ReturnCode_t RETCODE_OK
The Internal API and Implementation of OpenDDS.