CMarkup SetData Method
bool CMarkup::SetData( int nValue );
SetData to replace the main position element's contents with
szData. This will remove any child elements of the main position element if any. It returns
false if there is no main position.
See the GetData method for details on the data value for nodes other than elements.
The following example shows the result of calling
SetData("n<6") when the main position is the EQUATION element. The less than sign is encoded, and will be unencoded by the GetData method.
Update March 24, 2009:
SetData can be used with CMarkup release 11.0 developer version file write mode (see C++ XML writer), but only if the element was created without specifying a data value in
Using a CDATA Section
MNF_WITHCDATA is specified for
nFlags, a CDATA Section is used. This is useful for making the document more human readable because the character data is not processed to encode special markup characters. In the following example if the main position is the EQUATION element, the CDATA section is created by calling
The data passed to be stored in a CDATA Section inside an element may in rare cases happen to contain the same
]]> end delimiter that is used to indicate the end of the CDATA Section in the XML. A call to
SetData("]]>",MNF_WITHCDATA) generates multiple CDATA Sections in order to store the data satisfactorily in the XML. For the delimiter string occurring in the data not to be mistaken for a delimiter string, it is split between two CDATA Sections after the second bracket.
doc.AddElem( "EQUATION" ); doc.SetData( "]]>", MNF_WITHCDATA );
The GetData method concatenates the data from the consecutive CDATA Sections in the content of the element. Now the
SetData, GetData, SetChildData and GetChildData methods all work to support CDATA Sections without tedious handling of this rare case.
Entity and numeric character references
MNF_WITHREFS is specified for
nFlags, the ampersand of entity references and numeric character references is not escaped. Use this to put Unicode numeric character references and entity references in the XML document. Without this flag the ampersand will be encoded as & causing the references in your data value not to be treated as references.
doc.AddElem( "note" ); doc.SetData( "the 国 char means nation", MNF_WITHREFS );
<note>the 国 char means nation</note>
See also AddElem and SetData Flags