summaryrefslogtreecommitdiff
path: root/libxsd/xsd
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-01-12 16:18:31 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-01-12 16:18:31 +0200
commit4257e28e3bbb92042f5a1db05eba17d7b2a3b151 (patch)
treea503f69631812c6dc232714bd10c1e29e0da9eee /libxsd/xsd
parentf3e67f694188a16e426e92fda846998fd26db50d (diff)
Handle DOMLSException to be thrown by future versions of Xerces-C++
Diffstat (limited to 'libxsd/xsd')
-rw-r--r--libxsd/xsd/cxx/xml/dom/parsing-source.txx24
1 files changed, 23 insertions, 1 deletions
diff --git a/libxsd/xsd/cxx/xml/dom/parsing-source.txx b/libxsd/xsd/cxx/xml/dom/parsing-source.txx
index 04259ce..59cb153 100644
--- a/libxsd/xsd/cxx/xml/dom/parsing-source.txx
+++ b/libxsd/xsd/cxx/xml/dom/parsing-source.txx
@@ -5,6 +5,7 @@
#if _XERCES_VERSION >= 30000
# include <xercesc/dom/DOMLSParser.hpp>
+# include <xercesc/dom/DOMLSException.hpp>
#else
# include <xercesc/dom/DOMBuilder.hpp>
#endif
@@ -259,7 +260,15 @@ namespace xsd
xercesc::Wrapper4InputSource wrap (&is, false);
#if _XERCES_VERSION >= 30000
- auto_ptr<DOMDocument> doc (parser->parse (&wrap));
+ auto_ptr<DOMDocument> doc;
+
+ try
+ {
+ doc.reset (parser->parse (&wrap));
+ }
+ catch (const xercesc::DOMLSException&)
+ {
+ }
#else
auto_ptr<DOMDocument> doc (parser->parse (wrap));
#endif
@@ -454,8 +463,21 @@ namespace xsd
#endif // _XERCES_VERSION >= 30000
+
+#if _XERCES_VERSION >= 30000
+ auto_ptr<DOMDocument> doc;
+
+ try
+ {
+ doc.reset (parser->parseURI (string (uri).c_str ()));
+ }
+ catch (const xercesc::DOMLSException&)
+ {
+ }
+#else
auto_ptr<DOMDocument> doc (
parser->parseURI (string (uri).c_str ()));
+#endif
if (ehp.failed ())
doc.reset ();