]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/xmlnode.tex
wxXmlNode::GetAttribute's pointer argument must not be NULL, check for it
[wxWidgets.git] / docs / latex / wx / xmlnode.tex
CommitLineData
434cf5a4
RR
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2%% Name: xmlnode.tex
3%% Purpose: wxXmlNode documentation
4%% Author: Francesco Montorsi
5%% Created: 2006-04-18
6%% RCS-ID: $Id$
7%% Copyright: (c) 2006 Francesco Montorsi
8%% License: wxWindows license
9%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10
4c43dd90
JS
11\section{\class{wxXmlNode}}\label{wxxmlnode}
12
13Represents a node in an XML document. See \helpref{wxXmlDocument}{wxxmldocument}.
14
288b6107
VS
15Node has a name and may have content and attributes. Most common node types are
16{\tt wxXML\_TEXT\_NODE} (name and attributes are irrelevant) and
335d3a47
VZ
17{\tt wxXML\_ELEMENT\_NODE} (e.g. in {\tt <title>hi</title>} there is an element
18with name="title", irrelevant content and one child ({\tt wxXML\_TEXT\_NODE}
4c43dd90
JS
19with content="hi").
20
434cf5a4
RR
21If \texttt{wxUSE\_UNICODE} is 0, all strings are encoded in the encoding given to
22\helpref{wxXmlDocument::Load}{wxxmldocumentload} (default is UTF-8).
4c43dd90
JS
23
24
25\wxheading{Derived from}
26
27No base class
28
29\wxheading{Include files}
30
31<wx/xml/xml.h>
32
a7af285d
VZ
33\wxheading{Library}
34
35\helpref{wxXml}{librarieslist}
36
4c43dd90
JS
37\wxheading{Constants}
38
434cf5a4 39The following are the node types supported by \helpref{wxXmlNode}{wxxmlnode}:
4c43dd90
JS
40
41{\small
42\begin{verbatim}
43enum wxXmlNodeType
44{
45 wxXML_ELEMENT_NODE,
46 wxXML_ATTRIBUTE_NODE,
47 wxXML_TEXT_NODE,
48 wxXML_CDATA_SECTION_NODE,
49 wxXML_ENTITY_REF_NODE,
50 wxXML_ENTITY_NODE,
51 wxXML_PI_NODE,
52 wxXML_COMMENT_NODE,
53 wxXML_DOCUMENT_NODE,
54 wxXML_DOCUMENT_TYPE_NODE,
55 wxXML_DOCUMENT_FRAG_NODE,
56 wxXML_NOTATION_NODE,
57 wxXML_HTML_DOCUMENT_NODE
58}
59\end{verbatim}
60}
61
62\wxheading{See also}
63
288b6107 64\helpref{wxXmlDocument}{wxxmldocument}, \helpref{wxXmlAttribute}{wxxmlattribute}
4c43dd90
JS
65
66
67\latexignore{\rtfignore{\wxheading{Members}}}
68
69
70\membersection{wxXmlNode::wxXmlNode}\label{wxxmlnodewxxmlnode}
71
288b6107 72\func{}{wxXmlNode}{\param{wxXmlNode* }{parent}, \param{wxXmlNodeType }{type}, \param{const wxString\& }{name}, \param{const wxString\& }{content = wxEmptyString}, \param{wxXmlAttribute* }{attrs = \NULL}, \param{wxXmlNode* }{next = \NULL}}
4c43dd90
JS
73
74\wxheading{Parameters}
75
335d3a47
VZ
76\docparam{parent}{The parent node to which append this node instance.
77If this argument is \NULL this new node will be {\it floating} and it can be appended later to
78another one using the \helpref{AddChild}{wxxmlnodeaddchild} or \helpref{InsertChild}{wxxmlnodeinsertchild}
79functions. Otherwise the child is already added to the XML tree by this
80constructor and it shouldn't be done again.}
4c43dd90
JS
81\docparam{type}{One of the wxXmlNodeType enumeration value.}
82\docparam{name}{The name of the node. This is the string which appears between angular brackets.}
335d3a47
VZ
83\docparam{content}{The content of the node. Only meaningful when {\it type} is
84{\tt wxXML\_TEXT\_NODE} or {\tt wxXML\_CDATA\_SECTION\_NODE}.}
288b6107 85\docparam{attrs}{If not \NULL, this \helpref{wxXmlAttribute}{wxxmlattribute} object
335d3a47 86and its eventual siblings are attached to the node.}
434cf5a4 87\docparam{next}{If not \NULL, this node and its eventual siblings are attached to
4c43dd90
JS
88the node.}
89
335d3a47
VZ
90Creates this XML node and eventually insert it into an existing XML tree.
91
4c43dd90
JS
92\func{}{wxXmlNode}{\param{const wxXmlNode\& }{node}}
93
94Copy constructor. Note that this does NOT copy syblings
335d3a47
VZ
95and parent pointer, i.e. \helpref{GetParent()}{wxxmlnodegetparent} and
96\helpref{GetNext()}{wxxmlnodegetnext} will return \NULL
4c43dd90
JS
97after using copy ctor and are never unmodified by operator=.
98
288b6107 99On the other hand, it DOES copy children and attributes.
4c43dd90
JS
100
101
102\func{}{wxXmlNode}{\param{wxXmlNodeType }{type}, \param{const wxString\& }{name}, \param{const wxString\& }{content = wxEmptyString}}
103
335d3a47 104A simplified version of the first constructor form, assuming a \NULL parent.
4c43dd90
JS
105
106
107\membersection{wxXmlNode::\destruct{wxXmlNode}}\label{wxxmlnodedtor}
108
109\func{}{\destruct{wxXmlNode}}{\void}
110
288b6107 111The virtual destructor. Deletes attached children and attributes.
4c43dd90
JS
112
113\membersection{wxXmlNode::AddChild}\label{wxxmlnodeaddchild}
114
115\func{void}{AddChild}{\param{wxXmlNode* }{child}}
116
117Adds the given node as child of this node. To attach a second children to this node, use the
118\helpref{SetNext()}{wxxmlnodesetnext} function of the {\it child} node.
119
288b6107 120\membersection{wxXmlNode::AddAttribute}\label{wxxmlnodeaddattribute}
4c43dd90 121
288b6107 122\func{void}{AddAttribute}{\param{const wxString\& }{name}, \param{const wxString\& }{value}}
4c43dd90 123
288b6107 124Appends a attribute with given {\it name} and {\it value} to the list of attributes for this node.
4c43dd90 125
288b6107 126\func{void}{AddAttribute}{\param{wxXmlAttribute* }{attr}}
4c43dd90 127
288b6107 128Appends given attribute to the list of attributes for this node.
4c43dd90 129
288b6107 130\membersection{wxXmlNode::DeleteAttribute}\label{wxxmlnodedeleteattribute}
4c43dd90 131
288b6107 132\func{bool}{DeleteAttribute}{\param{const wxString\& }{name}}
4c43dd90 133
288b6107 134Removes the first attributes which has the given {\it name} from the list of attributes for this node.
4c43dd90
JS
135
136\membersection{wxXmlNode::GetChildren}\label{wxxmlnodegetchildren}
137
538f3830 138\constfunc{wxXmlNode*}{GetChildren}{\void}
4c43dd90
JS
139
140Returns the first child of this node.
141To get a pointer to the second child of this node (if it does exist), use the
142\helpref{GetNext()}{wxxmlnodegetnext} function on the returned value.
143
144\membersection{wxXmlNode::GetContent}\label{wxxmlnodegetcontent}
145
146\constfunc{wxString}{GetContent}{\void}
147
148Returns the content of this node. Can be an empty string.
669b0c0a 149Be aware that for nodes of type \texttt{wxXML\_ELEMENT\_NODE} (the most used node type) the
434cf5a4
RR
150content is an empty string. See \helpref{GetNodeContent()}{wxxmlnodegetnodecontent} for more details.
151
152
538f3830
VS
153\membersection{wxXmlNode::GetDepth}\label{wxxmlnodegetdepth}
154
155\constfunc{int}{GetDepth}{\param{wxXmlNode* }{grandparent = NULL}}
156
157Returns the number of nodes which separe this node from {\tt grandparent}.
158
159This function searches only the parents of this node until it finds {\tt grandparent}
160or the \NULL node (which is the parent of non-linked nodes or the parent of a
161\helpref{wxXmlDocument}{wxxmldocument}'s root node).
162
163
434cf5a4
RR
164\membersection{wxXmlNode::GetNodeContent}\label{wxxmlnodegetnodecontent}
165
166\constfunc{wxString}{GetNodeContent}{\void}
167
669b0c0a 168Returns the content of the first child node of type \texttt{wxXML\_TEXT\_NODE} or \texttt{wxXML\_CDATA\_SECTION\_NODE}.
434cf5a4
RR
169This function is very useful since the XML snippet \texttt{``<tagname>tagcontent</tagname>"} is represented by
170expat with the following tag tree:
171
172\begin{verbatim}
173wxXML_ENTITY_NODE name="tagname", content=""
174|-- wxXML_TEXT_NODE name="", content="tagcontent"
175\end{verbatim}
176
177or eventually:
178
179\begin{verbatim}
180wxXML_ENTITY_NODE name="tagname", content=""
181|-- wxXML_CDATA_SECTION_NODE name="", content="tagcontent"
182\end{verbatim}
183
669b0c0a 184An empty string is returned if the node has no children of type \texttt{wxXML\_TEXT\_NODE} or \texttt{wxXML\_CDATA\_SECTION\_NODE}, or if the content of the first child of such types is empty.
434cf5a4 185
4c43dd90
JS
186
187\membersection{wxXmlNode::GetName}\label{wxxmlnodegetname}
188
189\constfunc{wxString}{GetName}{\void}
190
191Returns the name of this node. Can be an empty string (e.g. for nodes of type {\tt wxXML\_TEXT\_NODE} or {\tt wxXML\_CDATA\_SECTION\_NODE}).
192
193\membersection{wxXmlNode::GetNext}\label{wxxmlnodegetnext}
194
195\constfunc{wxXmlNode*}{GetNext}{\void}
196
434cf5a4 197Returns a pointer to the sibling of this node or \NULL if there are no siblings.
4c43dd90
JS
198
199\membersection{wxXmlNode::GetParent}\label{wxxmlnodegetparent}
200
201\constfunc{wxXmlNode*}{GetParent}{\void}
202
434cf5a4 203Returns a pointer to the parent of this node or \NULL if this node has no parent.
4c43dd90 204
288b6107 205\membersection{wxXmlNode::GetAttribute}\label{wxxmlnodegetattribute}
4c43dd90 206
288b6107 207\constfunc{bool}{GetAttribute}{\param{const wxString\& }{attrName}, \param{wxString* }{value}}
4c43dd90 208
288b6107
VS
209Returns \true if a attribute named {\it attrName} could be found.
210If the {\it value} pointer is not \NULL, the value of that attribute is saved there.
4c43dd90 211
288b6107 212\constfunc{wxString}{GetAttribute}{\param{const wxString\& }{attrName}, \param{const wxString\& }{defaultVal}}
4c43dd90 213
288b6107 214Returns the value of the attribute named {\it attrName} if it does exist.
4c43dd90
JS
215If it does not exist, the {\it defaultVal} is returned.
216
288b6107 217\membersection{wxXmlNode::GetAttributes}\label{wxxmlnodegetattributes}
4c43dd90 218
288b6107 219\constfunc{wxXmlAttribute *}{GetAttributes}{\void}
4c43dd90 220
288b6107 221Return a pointer to the first attribute of this node.
4c43dd90
JS
222
223\membersection{wxXmlNode::GetType}\label{wxxmlnodegettype}
224
225\constfunc{wxXmlNodeType}{GetType}{\void}
226
227Returns the type of this node.
228
229
288b6107 230\membersection{wxXmlNode::HasAttribute}\label{wxxmlnodehasattribute}
4c43dd90 231
288b6107 232\constfunc{bool}{HasAttribute}{\param{const wxString\& }{attrName}}
4c43dd90 233
288b6107 234Returns \true if this node has a attribute named {\it attrName}.
4c43dd90
JS
235
236\membersection{wxXmlNode::InsertChild}\label{wxxmlnodeinsertchild}
237
fa6a8373 238\func{bool}{InsertChild}{\param{wxXmlNode* }{child}, \param{wxXmlNode* }{before\_node}}
4c43dd90
JS
239
240Inserts the {\it child} node after {\it before\_node} in the children list.
fa6a8373
RR
241If {\it before\_node} is \NULL, then {\it child} is prepended to the list of children and
242becomes the first child of this node.
243Returns \true if {\it before\_node} has been found and the {\it child} node has been inserted.
4c43dd90 244
538f3830
VS
245\membersection{wxXmlNode::IsWhitespaceOnly}\label{wxxmlnodecontainsiswhitespaceonly}
246
247\constfunc{bool}{IsWhitespaceOnly}{\void}
248
249Returns \true if the content of this node is a string containing only whitespaces (spaces,
250tabs, new lines, etc). Note that this function is locale-independent since the parsing of XML
251documents must always produce the exact same tree regardless of the locale it runs under.
252
4c43dd90
JS
253\membersection{wxXmlNode::RemoveChild}\label{wxxmlnoderemovechild}
254
255\func{bool}{RemoveChild}{\param{wxXmlNode* }{child}}
256
257Removes the given node from the children list. Returns \true if the node was found and removed
258or \false if the node could not be found.
259
34c07b8b
RR
260Note that the caller is reponsible for deleting the removed node in order to avoid memory leaks.
261
4c43dd90
JS
262\membersection{wxXmlNode::SetChildren}\label{wxxmlnodesetchildren}
263
264\func{void}{SetChildren}{\param{wxXmlNode* }{child}}
265
266Sets as first child the given node. The caller is responsible to delete any previously present
267children node.
268
269\membersection{wxXmlNode::SetContent}\label{wxxmlnodesetcontent}
270
271\func{void}{SetContent}{\param{const wxString\& }{con}}
272
273Sets the content of this node.
274
275\membersection{wxXmlNode::SetName}\label{wxxmlnodesetname}
276
277\func{void}{SetName}{\param{const wxString\& }{name}}
278
279Sets the name of this node.
280
281\membersection{wxXmlNode::SetNext}\label{wxxmlnodesetnext}
282
283\func{void}{SetNext}{\param{wxXmlNode* }{next}}
284
285Sets as sibling the given node. The caller is responsible to delete any previously present
286sibling node.
287
288\membersection{wxXmlNode::SetParent}\label{wxxmlnodesetparent}
289
290\func{void}{SetParent}{\param{wxXmlNode* }{parent}}
291
292Sets as parent the given node. The caller is responsible to delete any previously present
293parent node.
294
288b6107 295\membersection{wxXmlNode::SetAttributes}\label{wxxmlnodesetattributes}
4c43dd90 296
288b6107 297\func{void}{SetAttributes}{\param{wxXmlAttribute* }{attr}}
4c43dd90 298
288b6107
VS
299Sets as first attribute the given wxXmlAttribute object.
300The caller is responsible to delete any previously present attributes attached to this node.
4c43dd90
JS
301
302\membersection{wxXmlNode::SetType}\label{wxxmlnodesettype}
303
304\func{void}{SetType}{\param{wxXmlNodeType }{type}}
305
306Sets the type of this node.
307
308\membersection{wxXmlNode::operator=}\label{wxxmlnodeoperatorassign}
309
434cf5a4 310\func{wxXmlNode\&}{operator=}{\param{const wxXmlNode\& }{node}}
4c43dd90
JS
311
312See the copy constructor for more info.
313