00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef XMLENGINE_DOCUMENT_H_INCLUDED
00020 #define XMLENGINE_DOCUMENT_H_INCLUDED
00021
00022 #include <f32file.h>
00023
00024 #include "xmlengnode.h"
00025 #include "xmlengserializationoptions.h"
00026
00027
00028 class RXmlEngDOMImplementation;
00029
00038 class RXmlEngDocument : public TXmlEngNode
00039 {
00040 public:
00048 IMPORT_C RXmlEngDocument();
00049
00057 IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl);
00058
00067 IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, void* aInternal);
00068
00077 IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, TXmlEngElement aRoot);
00078
00084 IMPORT_C void Close();
00085
00099 IMPORT_C TInt SaveL( const TDesC& aFileName,
00100 TXmlEngNode aRoot = TXmlEngNode(),
00101 const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
00102
00117 IMPORT_C TInt SaveL( RFs& aRFs,
00118 const TDesC& aFileName,
00119 TXmlEngNode aRoot = TXmlEngNode(),
00120 const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
00121
00137 IMPORT_C TInt SaveL( MXmlEngOutputStream& aStream,
00138 TXmlEngNode aRoot = TXmlEngNode(),
00139 const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
00140
00156 IMPORT_C TInt SaveL(RBuf8& aBuffer,
00157 TXmlEngNode aRoot = TXmlEngNode(),
00158 const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions()) const;
00159
00166 IMPORT_C RXmlEngDocument CloneDocumentL() const;
00167
00178 IMPORT_C TXmlEngElement CreateDocumentElementL(const TDesC8& aName,
00179 const TDesC8& aNamespaceUri = KNullDesC8,
00180 const TDesC8& aPrefix = KNullDesC8);
00181
00194 IMPORT_C void SetDocumentElement(TXmlEngElement aNewDocElement);
00195
00202 IMPORT_C TPtrC8 XmlEncoding() const;
00203
00210 IMPORT_C TPtrC8 XmlVersion() const;
00211
00218 IMPORT_C TPtrC8 DocumentUri() const;
00219
00226 IMPORT_C TBool IsStandalone() const;
00227
00234 IMPORT_C void SetXmlVersionL(const TDesC8& aVersion);
00235
00243 IMPORT_C void SetDocumentUriL(const TDesC8& aUri);
00244
00251 IMPORT_C void SetStandalone(TBool aStandalone);
00252
00264 IMPORT_C RXmlEngDOMImplementation Implementation() const;
00265
00272 IMPORT_C TXmlEngElement DocumentElement() const;
00273
00281 IMPORT_C TXmlEngNode AdoptNodeL(TXmlEngNode aSource);
00282
00304 IMPORT_C TXmlEngAttr CreateAttributeL(const TDesC8& aName,
00305 const TDesC8& aValue = KNullDesC8);
00306
00314 IMPORT_C TXmlEngTextNode CreateTextNodeL(const TDesC8& aCharacters = KNullDesC8);
00315
00327 IMPORT_C TXmlEngBinaryContainer CreateBinaryContainerL( const TDesC8& aCid,
00328 const TDesC8& aData );
00329
00344 IMPORT_C TXmlEngChunkContainer CreateChunkContainerL( const TDesC8& aCid,
00345 const RChunk& aChunk,
00346 const TInt aChunkOffset,
00347 const TInt aDataSize );
00348
00361 IMPORT_C TXmlEngFileContainer CreateFileContainerL( const TDesC8& aCid,
00362 const RFile& aFile );
00363
00375 IMPORT_C TXmlEngElement CreateElementL(const TDesC8& aLocalName,
00376 const TDesC8& aNamespaceUri = KNullDesC8,
00377 const TDesC8& aPrefix = KNullDesC8);
00378
00386 IMPORT_C TXmlEngComment CreateCommentL(const TDesC8& aText = KNullDesC8);
00387
00395 IMPORT_C TXmlEngCDATASection CreateCDATASectionL(const TDesC8& aContents = KNullDesC8);
00396
00412 IMPORT_C TXmlEngEntityReference CreateEntityReferenceL(const TDesC8& aEntityRef);
00413
00422 IMPORT_C TXmlEngProcessingInstruction CreateProcessingInstructionL(const TDesC8& aTarget,
00423 const TDesC8& aData = KNullDesC8);
00424
00435 IMPORT_C void RegisterXmlIdL(TXmlEngElement aStartElement,
00436 const TDesC8& aLocalName,
00437 const TDesC8& aNamespaceUri = KNullDesC8);
00438
00447 IMPORT_C void RegisterXmlIdL(const TDesC8& aLocalName,
00448 const TDesC8& aNamespaceUri = KNullDesC8);
00449
00457 IMPORT_C TXmlEngElement FindElementByXmlIdL(const TDesC8& aValue ) const;
00458
00471 IMPORT_C void GetDataContainerList( RArray<TXmlEngDataContainer>& aList );
00472
00473 protected:
00474 friend class RXmlEngDOMParser;
00475 friend class TXmlEngNode;
00476 friend class TXmlEngAttr;
00477 friend class TXmlEngElement;
00478 friend class RXmlEngDOMImplementation;
00479
00480 protected:
00487 inline RXmlEngDocument(void* aInternal);
00488
00494 inline TXmlEngNode CopyL() const;
00495
00501 inline void Remove();
00502
00508 inline void ReplaceWith(TXmlEngNode aNode);
00509 private:
00522 TInt SaveNodeL( TXmlEngNode aNode,
00523 RBuf8& aBuffer,
00524 MXmlEngOutputStream* aOutputStream = NULL,
00525 TXmlEngSerializationOptions aOpt = TXmlEngSerializationOptions()) const;
00526
00537 void InitOwnedNodeListL();
00538
00549 void TakeOwnership(TXmlEngNode aNode);
00550
00557 void RemoveOwnership(TXmlEngNode aNode);
00558
00559 protected:
00561 RXmlEngDOMImplementation* iImpl;
00562
00563 };
00564
00565
00566
00567 #include "xmlengdocument.inl"
00568
00569 #endif