/* This file is part of the KDE project Copyright (C) 2004 David Faure This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef KODOM_H #define KODOM_H #include #include /** * This namespace contains a few convenience functions to simplify code using TQDom * (when loading OASIS documents, in particular). * * To find the child element with a given name, use KoDom::namedItemNS. * * To find all child elements with a given name, use * TQDomElement e; * forEachElement( e, parent ) * { * if ( e.localName() == "..." && e.namespaceURI() == KoXmlNS::... ) * { * ... * } * } * Note that this means you don't ever need to use TQDomNode nor toElement anymore! * Also note that localName is the part without the prefix, this is the whole point * of namespace-aware methods. * * To find the attribute with a given name, use TQDomElement::attributeNS. * * Do not use getElementsByTagNameNS, it's recursive (which is never needed in KOffice). * Do not use tagName() or nodeName() or prefix(), since the prefix isn't fixed. * * @author David Faure */ namespace KoDom { /** * A namespace-aware version of TQDomNode::namedItem(), * which also takes care of casting to a TQDomElement. * Use this when a domelement is known to have only *one* child element * with a given tagname. * * Note: do *NOT* use getElementsByTagNameNS, it's recursive! */ KOFFICECORE_EXPORT TQDomElement namedItemNS( const TQDomNode& node, const char* nsURI, const char* localName ); } #define forEachElement( elem, parent ) \ for ( TQDomNode _node = parent.firstChild(); !_node.isNull(); _node = _node.nextSibling() ) \ if ( !( elem = _node.toElement() ).isNull() ) #endif /* KODOM_H */