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