williamr@4: // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // Document node functions williamr@4: // williamr@4: williamr@4: williamr@4: williamr@4: /** williamr@4: @file williamr@4: @publishedAll williamr@4: @released williamr@2: */ williamr@4: #ifndef XMLENGDOCUMENT_H williamr@4: #define XMLENGDOCUMENT_H williamr@2: williamr@2: #include williamr@2: williamr@4: #include williamr@4: #include williamr@2: williamr@2: class RXmlEngDOMImplementation; williamr@2: williamr@2: /** williamr@4: This class represents an XML document in the DOM tree. It stores all nodes williamr@4: and associated information about the XML document. williamr@4: williamr@4: This class implements the interface. Another class, RXmlEngDOMImplementation, williamr@4: provides the implementation. An instance of RXmlEngDOMImplementation must be williamr@4: constructed and opened first and passed to RXmlEngDocument::OpenL(). williamr@4: */ williamr@2: class RXmlEngDocument : public TXmlEngNode williamr@2: { williamr@2: public: williamr@4: /** williamr@4: Default constructor. An instance of RXmlEngDocument must be "opened" with williamr@4: one of OpenL() overloads before methods are invoked on the object. williamr@4: */ williamr@2: IMPORT_C RXmlEngDocument(); williamr@2: williamr@2: /** williamr@4: Opens the document. williamr@4: @param aDOMImpl An opened DOM implementation object williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl); williamr@2: williamr@2: /** williamr@4: Opens the document, initializing it with the internal state pointer from williamr@4: another RXmlEngDocument. This document becomes an alias for the document williamr@4: whose state is represented by aInternal and a change in either document williamr@4: will be reflected in the other. Close() need only be called once, however, williamr@4: it is not an error to call Close() on each RXmlEngDocument. williamr@4: williamr@4: @param aDOMImpl An opened DOM implementation object williamr@4: @param aInternal The internal document state to initialize this object with williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, void* aInternal); williamr@2: williamr@4: /** williamr@4: Opens the document and adds aRoot as the root of the DOM tree. If aRoot is williamr@4: currently part of another document, it will be unlinked. Ownership is williamr@4: transferred to this document. williamr@4: williamr@4: @param aDOMImpl An opened DOM implementation object williamr@4: @param aRoot The element that will be the root of the DOM tree williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, TXmlEngElement aRoot); williamr@2: williamr@4: /** williamr@4: Closes document: All owned nodes, child nodes, and namespaces are freed. All williamr@4: data containers on the data container list are freed. williamr@4: */ williamr@2: IMPORT_C void Close(); williamr@2: williamr@4: /** williamr@4: Serializes document tree into a file. For nodes containing binary data in williamr@4: the form of BinaryDataContainer, FileContainer or ChunkContainer, the williamr@4: client can implement custom serialization by implementing the williamr@4: MXmlEngDataSerializer interface and saving a pointer to the customer williamr@4: serializer in the iDataSerializer member of the aSaveOptions parameter. If williamr@4: no custom serialization is specified, the binary data container nodes are williamr@4: serialized like text nodes. williamr@4: williamr@4: If no aRoot is provided, the entire DOM tree is serialized. aRoot does not williamr@4: need to be owned by this document. williamr@4: williamr@4: @param aFileName A file name (with path) williamr@4: @param aRoot Root node to be serialized williamr@4: @param aSaveOptions Options that control how serialization is performed williamr@4: @return Number of bytes written williamr@4: @leave KXmlEngErrWrongEncoding Encoding not understood williamr@4: @leave KXmlEngErrWrongUseOfAPI Document is NULL williamr@4: @leave KXmlEngErrNegativeOutputSize The data to be serialized has a negative size williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TInt SaveL( const TDesC& aFileName, williamr@2: TXmlEngNode aRoot = TXmlEngNode(), williamr@2: const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const; williamr@2: williamr@2: /** williamr@4: Serializes document tree into a file. For nodes containing binary data in williamr@4: the form of BinaryDataContainer, FileContainer or ChunkContainer, the williamr@4: client can implement custom serialization by implementing the williamr@4: MXmlEngDataSerializer interface and saving a pointer to the customer williamr@4: serializer in the iDataSerializer member of the aSaveOptions parameter. If williamr@4: no custom serialization is specified, the binary data container nodes are williamr@4: serialized like text nodes. williamr@4: williamr@4: If no aRoot is provided, the entire DOM tree is serialized. aRoot does not williamr@4: need to be owned by this document. williamr@4: williamr@4: @param aRFs An open file Server session williamr@4: @param aFileName A file name (with path) williamr@4: @param aRoot Root node to be serialized williamr@4: @param aSaveOptions Options that control how serialization is performed williamr@4: @return Number of bytes written williamr@4: @leave KXmlEngErrWrongEncoding Encoding not understood williamr@4: @leave KXmlEngErrWrongUseOfAPI Document is NULL williamr@4: @leave KXmlEngErrNegativeOutputSize The data to be serialized has a negative size williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TInt SaveL( RFs& aRFs, williamr@2: const TDesC& aFileName, williamr@2: TXmlEngNode aRoot = TXmlEngNode(), williamr@2: const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const; williamr@2: williamr@4: /** williamr@4: Serializes document tree into provided output stream, which supports williamr@4: progressive writing of data. For nodes containing binary data in the form williamr@4: of BinaryDataContainer, FileContainer or ChunkContainer, the client can williamr@4: implement custom serialization by implementing the MXmlEngDataSerializer williamr@4: interface and saving a pointer to the customer serializer in the williamr@4: iDataSerializer member of the aSaveOptions parameter. If no custom williamr@4: serialization is specified, the binary data container nodes are serialized williamr@4: like text nodes. williamr@4: williamr@4: If no aRoot is provided, the entire DOM tree is serialized. aRoot does not williamr@4: need to be owned by this document. williamr@4: williamr@4: @param aStream An output stream to write the serialized DOM tree williamr@4: @param aRoot Root node to be serialized williamr@4: @param aSaveOptions Options that control how serialization is performed williamr@4: @return Number of bytes written williamr@4: @leave KXmlEngErrWrongEncoding Encoding not understood williamr@4: @leave KXmlEngErrWrongUseOfAPI Document is NULL williamr@4: @leave KXmlEngErrNegativeOutputSize The data to be serialized has a negative size williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TInt SaveL( MXmlEngOutputStream& aStream, williamr@2: TXmlEngNode aRoot = TXmlEngNode(), williamr@2: const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const; williamr@2: williamr@2: /** williamr@4: Saves document tree into memory buffer. williamr@4: williamr@4: Any existing contents in aBuffer will be deleted. The memory required for williamr@4: aBuffer will be allocated by this method. The method caller must Close() williamr@4: aBuffer. williamr@4: williamr@4: If no aRoot is provided, the entire DOM tree is serialized. aRoot does not williamr@4: need to be owned by this document. williamr@4: williamr@4: @param aBuffer Resulting buffer williamr@4: @param aRoot The root of the subtree to serialize williamr@4: @param aSaveOptions Options that control how serialization is performed williamr@4: @return Size of buffer williamr@4: @leave KXmlEngErrWrongEncoding Encoding not understood williamr@4: @leave KXmlEngErrWrongUseOfAPI Document is NULL williamr@4: @leave KXmlEngErrNegativeOutputSize The data to be serialized has a negative size williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TInt SaveL(RBuf8& aBuffer, williamr@2: TXmlEngNode aRoot = TXmlEngNode(), williamr@2: const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions()) const; williamr@2: williamr@4: /** williamr@4: Creates a complete copy of the document and transfers ownership to the williamr@4: caller. The caller is required to call Close() on the new document. The williamr@4: new document is independant from this document and this document may be williamr@4: changed or closed without affecting the new document. williamr@4: williamr@4: @return Complete copy of the document williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C RXmlEngDocument CloneDocumentL() const; williamr@2: williamr@4: /** williamr@4: Creates a new element from a specific namespace to be the root of the williamr@4: document tree. Any existing document element of the document is destroyed. williamr@4: williamr@4: @param aName Element name williamr@4: @param aNamespaceUri Element namespace URI williamr@4: @param aPrefix Element namemespace prefix williamr@4: @return The new root element williamr@4: @leave KXmlEngErrWrongUseOfAPI No name has been specified williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngElement CreateDocumentElementL(const TDesC8& aName, williamr@2: const TDesC8& aNamespaceUri = KNullDesC8, williamr@2: const TDesC8& aPrefix = KNullDesC8); williamr@2: williamr@4: /** williamr@4: Replaces (and destroys) the document element. williamr@4: williamr@4: Note: Use TXmlEngElement::ReconcileNamespacesL() on the new document williamr@4: element if it or its descendants can contain references to namespace williamr@4: declarations outside of the element. williamr@4: williamr@4: @param aNewDocElement New document element williamr@4: @see TXmlEngElement::ReconcileNamespacesL() williamr@4: */ williamr@2: IMPORT_C void SetDocumentElement(TXmlEngElement aNewDocElement); williamr@2: williamr@2: /** williamr@4: Get document encoding. williamr@4: @return Encoding of the source XML data or TPtrC8("") if none. williamr@4: */ williamr@2: IMPORT_C TPtrC8 XmlEncoding() const; williamr@2: williamr@2: /** williamr@4: Get xml version williamr@4: @return Version number reported by the XML declaration or TPtrC8("") if none. williamr@4: */ williamr@2: IMPORT_C TPtrC8 XmlVersion() const; williamr@2: williamr@2: /** williamr@4: Retrieves base URI (if defined) of the document williamr@4: @return Document URI or TPtrC8("") if none. williamr@4: */ williamr@2: IMPORT_C TPtrC8 DocumentUri() const; williamr@2: williamr@2: /** williamr@4: Check if document is standalone williamr@4: @return ETrue if standalone="true" was specified in the XML declaration in williamr@4: the source XML file. williamr@4: */ williamr@4: IMPORT_C TBool IsStandalone() const; williamr@2: williamr@2: /** williamr@4: Sets XML version number to be shown in XML declaration when document is serialized. williamr@4: @param aVersion Version string williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C void SetXmlVersionL(const TDesC8& aVersion); williamr@2: williamr@4: /** williamr@4: Sets the location of the document. The document's URI is used as the williamr@4: top-level base URI definition. williamr@4: @param aUri Document URI williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C void SetDocumentUriL(const TDesC8& aUri); williamr@2: williamr@4: /** williamr@4: Sets "standalone" attribute of XML declaration for the document williamr@4: @param aStandalone Is the document standalone williamr@4: */ williamr@2: IMPORT_C void SetStandalone(TBool aStandalone); williamr@2: williamr@4: /** williamr@4: Get the DOM implementation. Ownership is not transferred. Any operation williamr@4: on the returned object will affect this document directly, in particular, williamr@4: a call to RXmlEngDOMImplementation::Close() will cause further operations williamr@4: on this document to fail. williamr@4: williamr@4: @return Object that represents current DOM implementation williamr@4: */ williamr@2: IMPORT_C RXmlEngDOMImplementation Implementation() const; williamr@2: williamr@2: /** williamr@4: Get the document element williamr@4: @return The document element -- the top-most element in the document tree williamr@4: */ williamr@2: IMPORT_C TXmlEngElement DocumentElement() const; williamr@2: williamr@4: /** williamr@4: Sets the "document" property on the node and all its descendants to be this williamr@4: RXmlEngDocument node williamr@4: @param aSource Node that should be added. williamr@4: @return Adopted node williamr@4: @leave KXmlEngErrWrongUseOfAPI The node has a parent node, the node is williamr@4: already owned by this document, or the node is a document. williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngNode AdoptNodeL(TXmlEngNode aSource); williamr@2: williamr@2: /** williamr@4: Creates a new attribute. williamr@4: williamr@4: aValue should represent the correct value of an attribute if it is put williamr@4: as-is into an XML file (with all characters correctly escaped with entity williamr@4: references when XML spec requires) williamr@4: williamr@4: The TXmlEngElement class provides a rich set of attribute creation methods, williamr@4: which not only create attributes but also link them into elements. williamr@4: williamr@4: @see TXmlEngElement williamr@4: williamr@4: There is no way to create attributes with namespaces (despite the DOM spec); williamr@4: you have to use one of the TXmlEngElement::AddNewAttributeL(..) methods instead williamr@4: williamr@4: The returned attribute is the only reference to the allocated memory until williamr@4: you have attached the attribute to some element node. williamr@4: williamr@4: @param aName Name of the atribute; no prefix allowed williamr@4: @param aValue Value of the attribute (optional) williamr@4: @return The newly created attribute williamr@4: @leave KXmlEngErrWrongUseOfAPI No name specified williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngAttr CreateAttributeL(const TDesC8& aName, williamr@2: const TDesC8& aValue = KNullDesC8); williamr@2: williamr@2: /** williamr@4: Creates a new text node and copies the content string into it. williamr@4: @param aCharacters Text node content williamr@4: @return The created node williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngTextNode CreateTextNodeL(const TDesC8& aCharacters = KNullDesC8); williamr@2: williamr@4: /** williamr@4: Creates a new binary container and copies the specified cid and data into williamr@4: it. A pointer to the container is stored in the document's data container williamr@4: list that can be fetched using GetDataContainerList(). williamr@4: williamr@4: @see GetDataContainerList( RArray& aList ) williamr@4: @param aCid Content identifier williamr@4: @param aData Binary octets williamr@4: @return The new binary container williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngBinaryContainer CreateBinaryContainerL( const TDesC8& aCid, williamr@2: const TDesC8& aData ); williamr@2: williamr@4: /** williamr@4: Creates a new chunk container and copies the specified cid into it. A williamr@4: reference to a memory chunk is stored in the container. The memory chunk williamr@4: must stay in scope for the lifetime of the container. A pointer to the williamr@4: container is stored in the document's data container list that can be williamr@4: fetched using GetDataContainerList(). williamr@4: williamr@4: @see GetDataContainerList( RArray& aList ) williamr@4: @param aCid Content identifier williamr@4: @param aChunk RChunk reference williamr@4: @param aChunkOffset Offset to the binary data in aChunk williamr@4: @param aDataSize Size of binary data in aChunk williamr@4: @return The new chunk container williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngChunkContainer CreateChunkContainerL( const TDesC8& aCid, williamr@2: const RChunk& aChunk, williamr@2: const TInt aChunkOffset, williamr@2: const TInt aDataSize ); williamr@2: williamr@4: /** williamr@4: Creates a new file container and copies the specified cid into it. A williamr@4: reference to a file is stored in the container. aFile must stay in scope williamr@4: of the lifetime of the container. A pointer to the container is stored in williamr@4: the document's data container list that can be fetched using williamr@4: GetDataContainerList(). williamr@4: williamr@4: @see GetDataContainerList( RArray& aList ) williamr@4: @param aCid Content identifier williamr@4: @param aFile The file to reference williamr@4: @return The new file container williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngFileContainer CreateFileContainerL( const TDesC8& aCid, williamr@2: const RFile& aFile ); williamr@2: williamr@4: /** williamr@4: Creates a new element node that belongs to the specific namespace. A williamr@4: namespace declaration node is created on the element. williamr@4: williamr@4: If the provided namespace uri is NULL, the element will be created without williamr@4: namespace. williamr@4: williamr@4: @param aNamespaceUri Namespace of new element williamr@4: @param aPrefix Prefix to use for the namespace binding and the QName of the element williamr@4: @param aLocalName Local name of the element williamr@4: @return The created element williamr@4: @leave KXmlEngErrWrongUseOfAPI No name specified williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngElement CreateElementL(const TDesC8& aLocalName, williamr@2: const TDesC8& aNamespaceUri = KNullDesC8, williamr@2: const TDesC8& aPrefix = KNullDesC8); williamr@2: williamr@2: /** williamr@4: Creates a new comment node and copies the specified string into it. williamr@4: @param aText New comment williamr@4: @return The created node williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngComment CreateCommentL(const TDesC8& aText = KNullDesC8); williamr@2: williamr@2: /** williamr@4: Creates a new CDATA section node and copies the specified string into it. williamr@4: @param aContents CDATASection content williamr@4: @return The created node williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngCDATASection CreateCDATASectionL(const TDesC8& aContents = KNullDesC8); williamr@2: williamr@2: /** williamr@4: Creates a new entity reference node and copies the specified string into williamr@4: it. williamr@4: williamr@4: Note: < , > , ' , " and other predefined entity references williamr@4: should not be created with this method. These entity references are rather williamr@4: "character references" and are encoded/decoded automatically. williamr@4: williamr@4: @param aEntityRef is a string in one of these forms: williamr@4: - name williamr@4: - &name williamr@4: - &name; williamr@4: where name is the name of the entity williamr@4: @return The new entity reference williamr@4: @leave KXmlEngErrWrongUseOfAPI No entity specified williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngEntityReference CreateEntityReferenceL(const TDesC8& aEntityRef); williamr@2: williamr@2: /** williamr@4: Creates a new empty Document Fragment node. The document fragment is owned by williamr@4: this document. williamr@4: @return The created document fragment williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@4: IMPORT_C TXmlEngDocumentFragment CreateDocumentFragmentL(); williamr@4: williamr@4: /** williamr@4: Creates a new processing instruction node and copies "target" and "data" williamr@4: into it. williamr@4: williamr@4: @param aTarget Target williamr@4: @param aData Data williamr@4: @return The created processing instruction williamr@4: @leave KXmlEngErrWrongUseOfAPI No target specified williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngProcessingInstruction CreateProcessingInstructionL(const TDesC8& aTarget, williamr@2: const TDesC8& aData = KNullDesC8); williamr@2: williamr@4: /** williamr@4: Sets the specified attribute as a xml:id attribute, starting at williamr@4: aStartElement and recursing through the subtree. To set the specified williamr@4: attribute as a xml:id attribute for the entire DOM tree, see williamr@4: RegisterXmlId(const TDesC8&,const TDesC8&). williamr@4: williamr@4: @param aStartElement Root of the subtree to recurse williamr@4: @param aLocalName Name of the attribute williamr@4: @param aNamespaceUri Namespace of the new element (default empty) williamr@4: @leave KXmlEngErrWrongUseOfAPI The starting element is NULL, the attribute williamr@4: name is not specified, the starting element is the document, or the williamr@4: starting element does not belong to a document. williamr@4: @leave KErrAlreadyExists The attribute is already set to be xml:id williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C void RegisterXmlIdL(TXmlEngElement aStartElement, williamr@2: const TDesC8& aLocalName, williamr@2: const TDesC8& aNamespaceUri = KNullDesC8); williamr@2: williamr@4: /** williamr@4: Sets the specified attribute as a xml:id attribute, recursing through the williamr@4: entire DOM tree. In order to specify a subtree only, see williamr@4: RegisterXmlId(TXmlEngElement,const TDesC8,const TDesC8). williamr@4: williamr@4: @param aLocalName Name of attribute williamr@4: @param aNamespaceUri Namespace of new element (default empty) williamr@4: @leave KXmlEngErrWrongUseOfAPI The document is NULL williamr@4: @leave KErrAlreadyExists The attribute is already set to be xml:id williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C void RegisterXmlIdL(const TDesC8& aLocalName, williamr@2: const TDesC8& aNamespaceUri = KNullDesC8); williamr@2: williamr@2: /** williamr@4: Looks for an element with the specified xml:id attribute williamr@4: @param aValue Name of attribute williamr@4: @return The found element or a NULL element if not found williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@2: IMPORT_C TXmlEngElement FindElementByXmlIdL(const TDesC8& aValue ) const; williamr@2: williamr@2: /** williamr@4: Retrieves an array of data containers owned by this document. williamr@4: williamr@4: Note: The document ceases to be the owner of a data container when the data williamr@4: container (or one of its predecessors) is removed from the document or williamr@4: becomes part of another document. Unlinking a data container (or one of its williamr@4: predecessors) doesn't remove ownership of the data container from this williamr@4: document so the list might contain containers that are not linked to this williamr@4: document anymore. williamr@4: williamr@4: @param aList Array of data containers williamr@4: @return KErrNone if successful or one of the system wide error codes otherwise williamr@4: */ williamr@4: IMPORT_C TInt GetDataContainerList( RArray& aList ); williamr@2: williamr@2: protected: williamr@2: friend class RXmlEngDOMParser; williamr@2: friend class TXmlEngNode; williamr@2: friend class TXmlEngAttr; williamr@2: friend class TXmlEngElement; williamr@2: friend class RXmlEngDOMImplementation; williamr@2: williamr@2: protected: williamr@2: /** williamr@4: Constructor williamr@4: @param aInternal Document pointer williamr@4: */ williamr@2: inline RXmlEngDocument(void* aInternal); williamr@2: williamr@2: /** williamr@4: DISABLED for document; CloneDocumentL() must be used williamr@4: */ williamr@2: inline TXmlEngNode CopyL() const; williamr@2: williamr@2: /** williamr@4: DISABLED for document; Close() must be used williamr@4: */ williamr@2: inline void Remove(); williamr@2: williamr@2: /** williamr@4: DISABLED for document; Close() must be used williamr@4: */ williamr@4: inline void ReplaceWith(TXmlEngNode aNode); williamr@4: inline void ReplaceWithL(TXmlEngNode aNode); williamr@4: williamr@4: /** williamr@4: DISABLED for document; Close() must be used williamr@2: */ williamr@4: inline TXmlEngNode SubstituteForL(TXmlEngNode aNode); williamr@4: williamr@2: private: williamr@2: TInt SaveNodeL( TXmlEngNode aNode, williamr@2: RBuf8& aBuffer, williamr@2: MXmlEngOutputStream* aOutputStream = NULL, williamr@2: TXmlEngSerializationOptions aOpt = TXmlEngSerializationOptions()) const; williamr@2: williamr@2: void InitOwnedNodeListL(); williamr@2: void TakeOwnership(TXmlEngNode aNode); williamr@2: void RemoveOwnership(TXmlEngNode aNode); williamr@2: williamr@2: protected: williamr@2: /** Pointer to DOM implementation object */ williamr@2: RXmlEngDOMImplementation* iImpl; williamr@2: williamr@2: };// class RXmlEngDocument williamr@2: williamr@2: williamr@2: williamr@4: #include williamr@2: williamr@4: #endif /* XMLENGDOCUMENT_H */