summaryrefslogtreecommitdiff
path: root/project2/xslRows.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'project2/xslRows.cpp')
-rw-r--r--project2/xslRows.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/project2/xslRows.cpp b/project2/xslRows.cpp
index 82c9d4a..7a46fae 100644
--- a/project2/xslRows.cpp
+++ b/project2/xslRows.cpp
@@ -21,7 +21,8 @@ XslRows::XslRows(const xmlpp::Element * p) :
RowSet(p),
CurlHelper(p),
html(p->get_attribute_value("html") == "true"),
- warnings(p->get_attribute_value("warnings") != "false")
+ warnings(p->get_attribute_value("warnings") != "false"),
+ encoding(p, "encoding", false)
{
BOOST_FOREACH(const xmlpp::Node * node, p->find("filterview")) {
const xmlpp::Element * elem = dynamic_cast<const xmlpp::Element *>(node);
@@ -66,7 +67,7 @@ XslRows::handleDataHelper(const char * ptr, size_t size, size_t nmemb, void *str
}
xmlDocPtr
-XslRows::getDocument(const Glib::ustring & url) const
+XslRows::getDocument(const Glib::ustring & url, const char * encoding) const
{
Documents::const_iterator i = documents.find(url);
if (i == documents.end()) {
@@ -79,8 +80,8 @@ XslRows::getDocument(const Glib::ustring & url) const
int flags = 0;
flags |= warnings ? 0 : XML_PARSE_NOWARNING | XML_PARSE_NOERROR;
xmlDocPtr doc = html ?
- htmlReadMemory(buf.c_str(), buf.length(), url.c_str(), NULL, flags) :
- xmlReadMemory(buf.c_str(), buf.length(), url.c_str(), NULL, flags);
+ htmlReadMemory(buf.c_str(), buf.length(), url.c_str(), encoding, flags) :
+ xmlReadMemory(buf.c_str(), buf.length(), url.c_str(), encoding, flags);
if (!doc) {
throw XmlParseError(xmlGetLastError()->message);
}
@@ -97,7 +98,7 @@ XslRows::execute(const RowProcessor * rp) const
{
typedef boost::shared_ptr<xmlXPathObject> xmlXPathObjectSPtr;
typedef boost::shared_ptr<xmlXPathContext> xmlXPathContextSPtr;
- xmlDocPtr doc = getDocument(url());
+ xmlDocPtr doc = getDocument(url(), encoding());
xmlXPathContextSPtr xpathCtx = xmlXPathContextSPtr(xmlXPathNewContext(doc), xmlXPathFreeContext);
if (!xpathCtx) {
throw XpathInitError(xmlGetLastError()->message);