Serialising XML DOM

This topic explains how to serialise a DOM document and save it to a file.

Before you start, you must:

The XML Engine is based on the libxml2 library, which supports the serialisation of XML documents. This process converts a DOM tree into a format that can be saved to a file or transferred through a network connection.

This tutorial explains how to save an existing XML document to a file. To store the result in a buffer, use the SetOutput(RBuf8&) method instead of the SetOutputL(TDesC&) method used below.


  1. If you have not done it earlier, call the XmlEnginePushL() method to open the XML library and put serialisation resources on the clean-up stack.
    XmlEnginePushL();
  2. Create an instance of the serialiser by calling its NewL() method. The serialiser type is a member of the TXmlEngSerializerType enumeration.
    CXmlEngSerializer* serializer = CXmlEngSerializer::NewL( ESerializerDefault );
  3. Configure the serialiser by using the SetOutputL() and SetSerialisationOptions() methods. You set the type of output (file, buffer, or stream) by choosing one of the SetOutput() or SetOuputL() methods.
    _LIT( KOutputFile, "c:\\tutorial.xml" );
    serializer->SetOutputL( KOutputFile );
    The SetSerialisationOptions() function sets other serialisation options from the TXmlEngSerializationOptions class.
    TXmlEngSerializationOptions options( TXmlEngSerializationOptions::KOptionIndent );
    serializer->SetSerializationOptions( options );
    

  4. Call the SerializeL() method to save your document to the tutorial.xml file.
    TInt bytesWritten = serializer->SerializeL( myDoc );

  5. Free your resources as necessary.

    1. Close the XML library by calling the XmlPopAndClose() method. This method also removes the serialisation resources from the clean-up stack.

    2. Perform any other clean-up operations.

The data in the myDoc XML document is stored in the tutorial.xml file.