diff options
author | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/poco/XML/src/EntityResolverImpl.cpp |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/poco/XML/src/EntityResolverImpl.cpp')
-rw-r--r-- | contrib/libs/poco/XML/src/EntityResolverImpl.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/contrib/libs/poco/XML/src/EntityResolverImpl.cpp b/contrib/libs/poco/XML/src/EntityResolverImpl.cpp new file mode 100644 index 00000000000..a072df5e529 --- /dev/null +++ b/contrib/libs/poco/XML/src/EntityResolverImpl.cpp @@ -0,0 +1,78 @@ +// +// EntityResolverImpl.cpp +// +// Library: XML +// Package: SAX +// Module: SAX +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/SAX/EntityResolverImpl.h" +#include "Poco/SAX/InputSource.h" +#include "Poco/XML/XMLString.h" +#include "Poco/URI.h" +#include "Poco/Path.h" +#include "Poco/Exception.h" + + +using Poco::URIStreamOpener; +using Poco::URI; +using Poco::Path; +using Poco::Exception; +using Poco::IOException; +using Poco::OpenFileException; + + +namespace Poco { +namespace XML { + + +EntityResolverImpl::EntityResolverImpl(): + _opener(URIStreamOpener::defaultOpener()) +{ +} + + +EntityResolverImpl::EntityResolverImpl(const URIStreamOpener& opener): + _opener(opener) +{ +} + + +EntityResolverImpl::~EntityResolverImpl() +{ +} + + +InputSource* EntityResolverImpl::resolveEntity(const XMLString* publicId, const XMLString& systemId) +{ + std::istream* pIstr = resolveSystemId(systemId); + InputSource* pInputSource = new InputSource(systemId); + if (publicId) pInputSource->setPublicId(*publicId); + pInputSource->setByteStream(*pIstr); + return pInputSource; +} + + +void EntityResolverImpl::releaseInputSource(InputSource* pSource) +{ + poco_check_ptr (pSource); + + delete pSource->getByteStream(); + delete pSource; +} + + +std::istream* EntityResolverImpl::resolveSystemId(const XMLString& systemId) +{ + std::string sid = fromXMLString(systemId); + return _opener.open(sid); +} + + +} } // namespace Poco::XML |