kword/latex/export/xmlparser.cpp
1/*
2** A program to convert the XML rendered by KOffice into LATEX.
3**
4** Copyright (C) 2000-2003 Robert JACOLIN
5**
6** This library is free software; you can redistribute it and/or
7** modify it under the terms of the GNU Library General Public
8** License as published by the Free Software Foundation; either
9** version 2 of the License, or (at your option) any later version.
10**
11** This library is distributed in the hope that it will be useful,
12** but WITHOUT ANY WARRANTY; without even the implied warranty of
13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14** Library General Public License for more details.
15**
16** To receive a copy of the GNU Library General Public License, write to the
17** Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
19**
20*/
21
22#include <kdebug.h>
23#include <KoStore.h>
24
25#include "xmlparser.h"
26#include "tqfile.h"
27
28/* Init static data */
29//FileHeader* XmlParser::_fileHeader = 0;
30Document* XmlParser::_root = 0;
31KoStore* XmlParser::_in = NULL;
32TQString XmlParser::_filename = "";
33
34XmlParser::XmlParser(Config* config, TQString filename):_config(config)
35
36{
37 //_filename = filename;
38 TQFile f(filename);
39 if(!f.open(IO_ReadOnly))
40 return;
41 if(!_document.setContent(&f))
42 {
43 f.close();
44 return;
45 }
46 else
47 f.close();
48 //_eltCurrent = _document.documentElement();
49}
50
51XmlParser::XmlParser(Config* config, TQByteArray in): _config(config)
52{
53 _document.setContent(in);
54}
55
56XmlParser::XmlParser(Config* config, const KoStore* in): _config(config)
57{
58 _in = const_cast<KoStore*>(in);
59 if(!_in->open("root"))
60 {
61 kdError(30503) << "Unable to open input file!" << endl;
62 return;
63 }
64 /* input file Reading */
65 TQByteArray array = _in->read(_in->size());
66 _document.setContent(array);
67 if(!_in->close())
68 {
69 kdError(30522) << "unable to close input file" << endl;
70 return;
71 }
72}
73
74XmlParser::XmlParser()
75{
76 _config = Config::instance();
77 /*_in = xmlParser.getStorage();
78 _fileHeader = xmlParser.getFileHeader();
79 _root = xmlParser.getRoot();
80 _document.setContent(_in);
81 _filename = xmlParser.getFilename();*/
82}
83
84XmlParser::~XmlParser()
85{
86 /*if(_in != NULL)
87 _in->close();*/
88}
89
90TQDomNode XmlParser::getChild(TQDomNode balise, TQString name)
91{
92 TQDomNode node = getChild(balise, name, 0);
93 kdDebug(30522) << node.nodeName() << endl;
94 return node;
95}
96
97bool XmlParser::isChild(TQDomNode balise, TQString name)
98{
99 if(balise.isElement())
100 return balise.toElement().elementsByTagName(name).count();
101 return false;
102}
103
104TQDomNode XmlParser::getChild(TQDomNode balise, TQString name, int index)
105{
106 if(balise.isElement()) {
107 TQDomNodeList children = balise.toElement().elementsByTagName(name);
108 if ( children.count() )
109 return children.item(index);
110 }
111 return TQDomNode();
112}
113
114TQDomNode XmlParser::getChild(TQDomNode balise, int index)
115{
116 TQDomNodeList children = balise.childNodes();
117 if ( children.count() )
118 return children.item(index);
119 return TQDomNode();
120}
121
122TQString XmlParser::getData(TQDomNode balise, int index)
123{
124 return getChild(getChild(balise, index), 0).nodeValue();
125}
126
127int XmlParser::getNbChild(TQDomNode balise)
128{
129 return balise.childNodes().count();
130}
131
132int XmlParser::getNbChild(TQDomNode balise, TQString name)
133{
134 if(balise.isElement())
135 return balise.toElement().elementsByTagName(name).count();
136 return -1;
137}
138
139TQString XmlParser::getChildName(TQDomNode balise, int index)
140{
141 return balise.childNodes().item(index).nodeName();
142}
143
144TQString XmlParser::getAttr(TQDomNode balise, TQString name) const
145{
146 if(balise.isElement())
147 return balise.toElement().attributeNode(name).value();
148 return TQString();
149}
This class hold all parameters and configuration from a file or from the filter configuration dialog ...
This class hold a whole document with its headers, footers, footnotes, endnotes, content,...