filters

xmlparser.cc

00001 /*
00002 ** A program to convert the XML rendered by KOffice into LATEX.
00003 **
00004 ** Copyright (C) 2000-2002 Robert JACOLIN
00005 **
00006 ** This library is free software; you can redistribute it and/or
00007 ** modify it under the terms of the GNU Library General Public
00008 ** License as published by the Free Software Foundation; either
00009 ** version 2 of the License, or (at your option) any later version.
00010 **
00011 ** This library is distributed in the hope that it will be useful,
00012 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 ** Library General Public License for more details.
00015 **
00016 ** To receive a copy of the GNU Library General Public License, write to the
00017 ** Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018  * Boston, MA 02110-1301, USA.
00019 **
00020 */
00021 
00022 #include <kdebug.h>
00023 #include <KoStore.h>
00024 
00025 #include "xmlparser.h"
00026 #include "qfile.h"
00027 
00028 /* Init static data */
00029 FileHeader* XmlParser::_fileHeader = 0;
00030 Document* XmlParser::_root = 0;
00031 KoStore* XmlParser::_in = NULL;
00032 
00033 XmlParser::XmlParser(QString filename): _filename(filename)
00034 {
00035     QFile f(filename);
00036     if(!f.open(IO_ReadOnly))
00037         return;
00038     if(!_document.setContent(&f))
00039     {
00040         f.close();
00041         return;
00042     }
00043     f.close();
00044     //_eltCurrent = _document.documentElement();
00045 }
00046 
00047 XmlParser::XmlParser(QByteArray in)
00048 {
00049     _document.setContent(in);
00050 }
00051 
00052 XmlParser::XmlParser(const KoStore* in)
00053 {
00054   _in = const_cast<KoStore*>(in);
00055     if(!_in->open("root"))
00056     {
00057         kdError(30522) << "Unable to open input file!" << endl;
00058         return;
00059     }
00060     /* input file Reading */
00061     QByteArray array = _in->read(_in->size());
00062     _document.setContent(array);
00063 }
00064 
00065 XmlParser::XmlParser()
00066 {
00067 }
00068 
00069 XmlParser::~XmlParser()
00070 {
00071     if(_in != NULL)
00072         _in->close();
00073 }
00074 
00075 QDomNode XmlParser::getChild(QDomNode balise, QString name)
00076 {
00077     QDomNode node = getChild(balise, name, 0);
00078     kdDebug(30522) << node.nodeName() << endl;
00079     return node;
00080 }
00081 
00082 bool XmlParser::isChild(QDomNode balise, QString name)
00083 {
00084     if(balise.isElement())
00085         return balise.toElement().elementsByTagName(name).count();
00086     return false;
00087 }
00088 
00089 QDomNode XmlParser::getChild(QDomNode balise, QString name, int index)
00090 {
00091     if(balise.isElement()) {
00092         QDomNodeList children = balise.toElement().elementsByTagName(name);
00093         if ( children.count() )
00094             return children.item(index);
00095     }
00096     return QDomNode();
00097 }
00098 
00099 QDomNode XmlParser::getChild(QDomNode balise, int index)
00100 {
00101     QDomNodeList children = balise.childNodes();
00102     if ( children.count() )
00103         return children.item(index);
00104     return QDomNode();
00105 }
00106 
00107 QString XmlParser::getData(QDomNode balise, int index)
00108 {
00109     return getChild(getChild(balise, index), 0).nodeValue();
00110 }
00111 
00112 QString XmlParser::getData(QDomNode balise, QString name)
00113 {
00114     return getChild(getChild(balise, name), 0).nodeValue();
00115 }
00116 
00117 int XmlParser::getNbChild(QDomNode balise)
00118 {
00119     return balise.childNodes().count();
00120 }
00121 
00122 int XmlParser::getNbChild(QDomNode balise, QString name)
00123 {
00124     if(balise.isElement())
00125         return balise.toElement().elementsByTagName(name).count();
00126     return -1;
00127 }
00128 
00129 QString  XmlParser::getChildName(QDomNode balise, int index)
00130 {
00131     return balise.childNodes().item(index).nodeName();
00132 }
00133 
00134 QString  XmlParser::getAttr(QDomNode balise, QString name) const
00135 {
00136     if(balise.isElement())
00137         return balise.toElement().attributeNode(name).value();
00138     return QString();
00139 }
KDE Home | KDE Accessibility Home | Description of Access Keys