diff options
author | Adrian Kummerländer | 2014-04-21 13:30:23 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-04-21 13:30:23 +0200 |
commit | cdf4ad3486debe75fe89b2f04bb62541f3ac8405 (patch) | |
tree | b09b380ca22abe5678079f86420c748dcd82c70d /src/function/read_xml_file.cc | |
parent | 5f4f3f003e1f08e5495e0fe30fae18eb6029888d (diff) | |
download | InputXSLT-cdf4ad3486debe75fe89b2f04bb62541f3ac8405.tar InputXSLT-cdf4ad3486debe75fe89b2f04bb62541f3ac8405.tar.gz InputXSLT-cdf4ad3486debe75fe89b2f04bb62541f3ac8405.tar.bz2 InputXSLT-cdf4ad3486debe75fe89b2f04bb62541f3ac8405.tar.lz InputXSLT-cdf4ad3486debe75fe89b2f04bb62541f3ac8405.tar.xz InputXSLT-cdf4ad3486debe75fe89b2f04bb62541f3ac8405.tar.zst InputXSLT-cdf4ad3486debe75fe89b2f04bb62541f3ac8405.zip |
Extracted filesystem path resolution into InputXSLT::FilesystemContext
* this class provides methods for resolving paths relative to the contained base path
* other filesystem interaction methods will also be implemented in this class
** for instance directory traversal
Diffstat (limited to 'src/function/read_xml_file.cc')
-rw-r--r-- | src/function/read_xml_file.cc | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/function/read_xml_file.cc b/src/function/read_xml_file.cc index 78f81c4..ac42288 100644 --- a/src/function/read_xml_file.cc +++ b/src/function/read_xml_file.cc @@ -4,12 +4,12 @@ namespace InputXSLT { -FunctionReadXmlFile::FunctionReadXmlFile(const std::string& path): - path_(path), +FunctionReadXmlFile::FunctionReadXmlFile(const FilesystemContext& context): + fs_context_(context), parser_() { } FunctionReadXmlFile::FunctionReadXmlFile(const FunctionReadXmlFile& src): - path_(src.path_), + fs_context_(src.fs_context_), parser_() { } xalan::XObjectPtr FunctionReadXmlFile::execute( @@ -23,19 +23,13 @@ xalan::XObjectPtr FunctionReadXmlFile::execute( executionContext ); - generalError(executionContext, context, locator); + this->generalError(executionContext, context, locator); } - xalan::CharVectorType castHelper; - arguments[0]->str().transcode(castHelper); - - const std::string fileName( - castHelper.begin(), - castHelper.end() + boost::filesystem::ifstream file( + this->fs_context_.resolve(arguments[0]->str()) ); - boost::filesystem::ifstream file(this->path_ / fileName); - return executionContext.getXObjectFactory().createNodeSet( this->parser_.parseXMLStream( xalan::XSLTInputSource(file) |