aboutsummaryrefslogtreecommitdiff
path: root/src/function/read_xml_file.cc
diff options
context:
space:
mode:
authorAdrian Kummerlaender2014-06-15 15:14:46 +0200
committerAdrian Kummerlaender2014-06-15 15:14:46 +0200
commit32c65970263c65022f5278b568c07b63c3d5d64b (patch)
tree2efa72b5bc2288daec5d8a5c7ec0e8f7fcaa1365 /src/function/read_xml_file.cc
parent58d3e1b8d03a10594e13658b50545fd714c04f6d (diff)
downloadInputXSLT-32c65970263c65022f5278b568c07b63c3d5d64b.tar
InputXSLT-32c65970263c65022f5278b568c07b63c3d5d64b.tar.gz
InputXSLT-32c65970263c65022f5278b568c07b63c3d5d64b.tar.bz2
InputXSLT-32c65970263c65022f5278b568c07b63c3d5d64b.tar.lz
InputXSLT-32c65970263c65022f5278b568c07b63c3d5d64b.tar.xz
InputXSLT-32c65970263c65022f5278b568c07b63c3d5d64b.tar.zst
InputXSLT-32c65970263c65022f5278b568c07b63c3d5d64b.zip
Merged "read-xml-file" and "read-file" into "read-file"
* FunctionReadFile is now able to distinguish between XML files and plain text files ** it selects the appropriate course of action automatically ** reading the file as XML into the DOM or reading it as a string * the current selection criteria is the file extension ** I am thinking about trying to import every file into the DOM and using the result state of that action as selection criteria * Updated README.md and test cases accordingly
Diffstat (limited to 'src/function/read_xml_file.cc')
-rw-r--r--src/function/read_xml_file.cc86
1 files changed, 0 insertions, 86 deletions
diff --git a/src/function/read_xml_file.cc b/src/function/read_xml_file.cc
deleted file mode 100644
index e4d256d..0000000
--- a/src/function/read_xml_file.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "read_xml_file.h"
-
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/dom/DOMImplementation.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-#include <xercesc/parsers/XercesDOMParser.hpp>
-#include <xercesc/framework/LocalFileInputSource.hpp>
-
-#include "support/xerces_string_guard.h"
-#include "support/dom/result_node_facade.h"
-
-namespace {
-
-inline xercesc::DOMNode* importDocumentElement(
- const std::string& filePath,
- xercesc::DOMDocument* const domDocument
-) {
- const xercesc::LocalFileInputSource file(
- *InputXSLT::XercesStringGuard<XMLCh>(filePath.data())
- );
-
- xercesc::XercesDOMParser parser;
- parser.parse(file);
-
- return domDocument->importNode(
- parser.getDocument()->getDocumentElement(),
- true
- );
-}
-
-}
-
-namespace InputXSLT {
-
-xercesc::DOMDocument* FunctionReadXmlFile::constructDocument(
- const FilesystemContext& fsContext,
- std::string rawPath
-) {
- boost::filesystem::path filePath(fsContext.resolve(rawPath));
-
- if ( !(boost::filesystem::exists(filePath) &&
- boost::filesystem::is_regular_file(filePath)) ) {
- if ( auto resolvedPath = this->include_resolver_->resolve(rawPath) ) {
- filePath = *resolvedPath;
- }
- }
-
- xercesc::DOMDocument* const domDocument(
- xercesc::DOMImplementation::getImplementation()->createDocument(
- nullptr,
- *XercesStringGuard<XMLCh>("content"),
- nullptr
- )
- );
-
- xercesc::DOMNode* const rootNode(
- domDocument->getDocumentElement()
- );
-
- ResultNodeFacade result(domDocument, rootNode, "file");
- result.setAttribute("path", filePath.string());
-
- if ( boost::filesystem::is_regular_file(filePath) ) {
- try {
- result.setContent(
- importDocumentElement(filePath.string(), domDocument)
- );
-
- result.setAttribute("result", "success");
- }
- catch ( const xercesc::DOMException& exception ) {
- result.setAttribute("result", "error");
-
- result.setValueNode(
- "error",
- *XercesStringGuard<char>(exception.msg)
- );
- }
- } else {
- result.setAttribute("result", "error");
- }
-
- return domDocument;
-}
-
-}