diff options
Diffstat (limited to 'src/xml/dom')
-rw-r--r-- | src/xml/dom/qdom.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp index 2383bda1c9..5907a72bd6 100644 --- a/src/xml/dom/qdom.cpp +++ b/src/xml/dom/qdom.cpp @@ -54,6 +54,7 @@ #include <qtextcodec.h> #include <qtextstream.h> #include <qxml.h> +#include "private/qxml_p.h" #include <qvariant.h> #include <qmap.h> #include <qshareddata.h> @@ -502,7 +503,7 @@ public: ~QDomDocumentPrivate(); bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg, int *errorLine, int *errorColumn); - bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg, int *errorLine, int *errorColumn); + bool setContent(QXmlInputSource *source, QXmlReader *reader, QXmlSimpleReader *simpleReader, QString *errorMsg, int *errorLine, int *errorColumn); // Attributes QDomDocumentTypePrivate* doctype() { return type.data(); } @@ -573,7 +574,7 @@ public: class QDomHandler : public QXmlDefaultHandler { public: - QDomHandler(QDomDocumentPrivate* d, bool namespaceProcessing); + QDomHandler(QDomDocumentPrivate* d, QXmlSimpleReader *reader, bool namespaceProcessing); ~QDomHandler(); // content handler @@ -615,6 +616,7 @@ private: bool cdata; bool nsProcessing; QXmlLocator *locator; + QXmlSimpleReader *reader; }; /************************************************************** @@ -6208,10 +6210,10 @@ bool QDomDocumentPrivate::setContent(QXmlInputSource *source, bool namespaceProc { QXmlSimpleReader reader; initializeReader(reader, namespaceProcessing); - return setContent(source, &reader, errorMsg, errorLine, errorColumn); + return setContent(source, &reader, &reader, errorMsg, errorLine, errorColumn); } -bool QDomDocumentPrivate::setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg, int *errorLine, int *errorColumn) +bool QDomDocumentPrivate::setContent(QXmlInputSource *source, QXmlReader *reader, QXmlSimpleReader *simpleReader, QString *errorMsg, int *errorLine, int *errorColumn) { clear(); impl = new QDomImplementationPrivate; @@ -6221,7 +6223,7 @@ bool QDomDocumentPrivate::setContent(QXmlInputSource *source, QXmlReader *reader bool namespaceProcessing = reader->feature(QLatin1String("http://xml.org/sax/features/namespaces")) && !reader->feature(QLatin1String("http://xml.org/sax/features/namespace-prefixes")); - QDomHandler hnd(this, namespaceProcessing); + QDomHandler hnd(this, simpleReader, namespaceProcessing); reader->setContentHandler(&hnd); reader->setErrorHandler(&hnd); reader->setLexicalHandler(&hnd); @@ -6758,7 +6760,7 @@ bool QDomDocument::setContent(QXmlInputSource *source, bool namespaceProcessing, impl = new QDomDocumentPrivate(); QXmlSimpleReader reader; initializeReader(reader, namespaceProcessing); - return IMPL->setContent(source, &reader, errorMsg, errorLine, errorColumn); + return IMPL->setContent(source, &reader, &reader, errorMsg, errorLine, errorColumn); } /*! @@ -6820,7 +6822,7 @@ bool QDomDocument::setContent(QXmlInputSource *source, QXmlReader *reader, QStri { if (!impl) impl = new QDomDocumentPrivate(); - return IMPL->setContent(source, reader, errorMsg, errorLine, errorColumn); + return IMPL->setContent(source, reader, 0, errorMsg, errorLine, errorColumn); } /*! @@ -7360,9 +7362,9 @@ QDomComment QDomNode::toComment() const * **************************************************************/ -QDomHandler::QDomHandler(QDomDocumentPrivate* adoc, bool namespaceProcessing) +QDomHandler::QDomHandler(QDomDocumentPrivate* adoc, QXmlSimpleReader* areader, bool namespaceProcessing) : errorLine(0), errorColumn(0), doc(adoc), node(adoc), cdata(false), - nsProcessing(namespaceProcessing), locator(0) + nsProcessing(namespaceProcessing), locator(0), reader(areader) { } @@ -7466,11 +7468,10 @@ bool QDomHandler::processingInstruction(const QString& target, const QString& da return false; } -extern bool qt_xml_skipped_entity_in_content; bool QDomHandler::skippedEntity(const QString& name) { // we can only handle inserting entity references into content - if (!qt_xml_skipped_entity_in_content) + if (reader && !reader->d_ptr->skipped_entity_in_content) return true; QDomNodePrivate *n = doc->createEntityReference(name); |