dom_node.h
1/*
2** ClanLib SDK
3** Copyright (c) 1997-2020 The ClanLib Team
4**
5** This software is provided 'as-is', without any express or implied
6** warranty. In no event will the authors be held liable for any damages
7** arising from the use of this software.
8**
9** Permission is granted to anyone to use this software for any purpose,
10** including commercial applications, and to alter it and redistribute it
11** freely, subject to the following restrictions:
12**
13** 1. The origin of this software must not be misrepresented; you must not
14** claim that you wrote the original software. If you use this software
15** in a product, an acknowledgment in the product documentation would be
16** appreciated but is not required.
17** 2. Altered source versions must be plainly marked as such, and must not be
18** misrepresented as being the original software.
19** 3. This notice may not be removed or altered from any source distribution.
20**
21** Note: Some of the libraries ClanLib may link to may have additional
22** requirements or restrictions.
23**
24** File Author(s):
25**
26** Magnus Norddahl
27*/
28
29
30#pragma once
31
32#include <memory>
33#include "dom_string.h"
34
35namespace clan
36{
39
40 class DomElement;
41 class DomAttr;
42 class DomText;
43 class DomCDATASection;
44 class DomEntityReference;
45 class DomEntity;
46 class DomProcessingInstruction;
47 class DomComment;
48 class DomDocument;
49 class DomDocumentType;
50 class DomDocumentFragment;
51 class DomNotation;
52 class DomNodeList;
53 class DomNamedNodeMap;
54 class DomNode_Impl;
55
70 class DomNode
71 {
72 public:
74
78 DomNode(const DomNode &copy);
79
81
84 {
97 NOTATION_NODE = 12
98 };
99
101
117
120
122
126
128
135 void set_prefix(const DomString &prefix);
136
138
142
144
160
162 void set_node_value(const DomString &value);
163
165 unsigned short get_node_type() const;
166
168
172
174
181
183
185
187
189
191
193
195
197
200
202
204
206 bool is_null() const;
207
209 bool is_element() const;
210
212 bool is_attr() const;
213
215 bool is_text() const;
216
218 bool is_cdata_section() const;
219
222
224 bool is_entity() const;
225
228
230 bool is_comment() const;
231
233 bool is_document() const;
234
236 bool is_document_type() const;
237
240
242 bool is_notation() const;
243
245 bool is_supported(const DomString &feature, const DomString &version) const;
246
248 bool has_attributes() const;
249
251 bool has_child_nodes() const;
252
254
258
260 bool operator ==(const DomNode &other) const;
261
263 bool operator !=(const DomNode &other) const;
264
266
276 void normalize();
277
279
285 DomNode insert_before(DomNode &new_child, DomNode &ref_child);
286
288
292 DomNode replace_child(DomNode &new_child, DomNode &old_child);
293
296
298
300
302
309 DomNode clone_node(bool deep) const;
310
312
314
316
318
320
322
324
326
328
330
332
334
336
338
340
342
344
346
348
350
352
354
356
358
360
361 DomNode named_item(const DomString &name) const;
362
365 const DomString &namespace_uri,
366 const DomString &local_name) const;
367
369 DomString find_namespace_uri(const DomString &qualified_name) const;
370
372 DomString find_prefix(const DomString &namespace_uri) const;
373
375 std::vector<DomNode> select_nodes(const DomString &xpath_expression) const;
376
378 DomNode select_node(const DomString &xpath_expression) const;
379
381 std::string select_string(const DomString &xpath_expression) const;
382
384 int select_int(const DomString &xpath_expression) const;
385
387 float select_float(const DomString &xpath_expression) const;
388
390 bool select_bool(const DomString &xpath_expression) const;
391
392 protected:
393 DomNode(DomDocument doc, unsigned short node_type);
394 DomNode(const std::shared_ptr<DomNode_Impl> &impl);
395
396 std::shared_ptr<DomNode_Impl> impl;
397
398 friend class DomDocument;
399 friend class DomNamedNodeMap;
400 };
401
403}
DOM Attribute class.
Definition dom_attr.h:67
DOM CDATA Section.
Definition dom_cdata_section.h:55
DOM Comment class.
Definition dom_comment.h:45
DOM Document Fragment class.
Definition dom_document_fragment.h:71
DOM Document Type class.
Definition dom_document_type.h:51
DOM Document class.
Definition dom_document.h:65
DOM Element class.
Definition dom_element.h:60
DOM Entity Reference class.
Definition dom_entity_reference.h:52
DOM Entity class.
Definition dom_entity.h:46
DOM Named Node Map class.
Definition dom_named_node_map.h:52
DOM Node List class.
Definition dom_node_list.h:51
DOM Node class.
Definition dom_node.h:71
DomEntityReference to_entity_reference() const
Returns the Entity Reference interface to this node.
DomNamedNodeMap get_attributes() const
A NamedNodeMap containing the attributes of this node (if it is an Element) or null otherwise.
void set_node_value(const DomString &value)
Sets the node value.
DomNode get_previous_sibling() const
The node immediately preceding this node.
std::string select_string(const DomString &xpath_expression) const
Returns the first node value matching the specified xpath expression using this node as the context n...
DomNode named_item_ns(const DomString &namespace_uri, const DomString &local_name) const
Retrieves the first child node with the specified namespace URI and local name.
DomString find_prefix(const DomString &namespace_uri) const
Searches the node tree upwards for the prefix name for the namespace URI.
DomNotation to_notation() const
Returns the Notation interface to this node.
std::vector< DomNode > select_nodes(const DomString &xpath_expression) const
Returns all the nodes matching the specified xpath expression using this node as the context node.
bool is_null() const
Returns true if this is a null node.
DomDocument get_owner_document() const
The Document object associated with this node.
DomString get_node_name() const
Returns the node name.
DomText to_text() const
Returns the Text interface to this node.
bool is_document_type() const
Returns true if this is a document type node.
bool is_processing_instruction() const
Returns true if this is a processing instruction node.
DomNode select_node(const DomString &xpath_expression) const
Returns the first node matching the specified xpath expression using this node as the context node.
int select_int(const DomString &xpath_expression) const
Returns the first node value (as integer) matching the specified xpath expression using this node as ...
DomNode clone_node(bool deep) const
Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.
DomNode append_child(DomNode new_child)
Adds the node new_child to the end of the list of children of this node.
DomComment to_comment() const
Returns the Comment interface to this node.
DomNode get_last_child() const
The last child of this node.
DomNode get_next_sibling() const
The node immediately following this node.
DomAttr to_attr() const
Returns the Attribute interface to this node.
DomCDATASection to_cdata_section() const
Returns the CDATA Section interface to this node.
float select_float(const DomString &xpath_expression) const
Returns the first node value (as float) matching the specified xpath expression using this node as th...
bool is_cdata_section() const
Returns true if this is a CDATA section node.
bool has_child_nodes() const
Returns true if this node has any children.
DomString find_namespace_uri(const DomString &qualified_name) const
Searches the node tree upwards for the namespace URI of the given qualified name.
DomNode get_first_child() const
The first child of this node.
DomNode remove_child(DomNode &old_child)
Removes the child node indicated by old_child from the list of children, and returns it.
DomNode get_parent_node() const
Returns the parent of this node.
DomDocumentFragment to_document_fragment() const
Returns the Document Fragment interface to this node.
DomNode & operator=(const DomNode &copy)
Copy assignment operator.
DomNode insert_before(DomNode &new_child, DomNode &ref_child)
Inserts the node new_child before the existing child node ref_child.
unsigned short get_node_type() const
Returns the node type (one of those in the NodeType enum).
bool is_supported(const DomString &feature, const DomString &version) const
Tests whether the DOM implementation implements a specific feature and that feature is supported by t...
void set_prefix(const DomString &prefix)
Sets the namespace prefix of the node.
DomString get_prefix() const
Returns the namespace prefix of the node.
bool is_entity_reference() const
Returns true if this is an entity reference node.
bool operator==(const DomNode &other) const
Compare operator.
DomString get_local_name() const
Returns local part of the qualified name of this node.
bool is_document() const
Returns true if this is a document node.
bool is_entity() const
Returns true if this is an entity node.
DomEntity to_entity() const
Returns the Entity interface to this node.
bool is_text() const
Returns true if this is a text node.
bool is_element() const
Returns true if this is an element node.
bool is_document_fragment() const
Returns true if this is a document fragment node.
DomNode replace_child(DomNode &new_child, DomNode &old_child)
Replaces the child node old_child with new_child in the list of children.
DomNodeList get_child_nodes() const
Returns a NodeList that contains all children of this node.
DomNode(const std::shared_ptr< DomNode_Impl > &impl)
std::shared_ptr< DomNode_Impl > impl
Definition dom_node.h:396
bool operator!=(const DomNode &other) const
Compare operator.
NodeType
An integer indicating which type of node this is.
Definition dom_node.h:84
@ ENTITY_REFERENCE_NODE
Definition dom_node.h:90
@ NOTATION_NODE
Definition dom_node.h:97
@ ELEMENT_NODE
Definition dom_node.h:86
@ DOCUMENT_NODE
Definition dom_node.h:94
@ COMMENT_NODE
Definition dom_node.h:93
@ PROCESSING_INSTRUCTION_NODE
Definition dom_node.h:92
@ ENTITY_NODE
Definition dom_node.h:91
@ NULL_NODE
Definition dom_node.h:85
@ DOCUMENT_FRAGMENT_NODE
Definition dom_node.h:96
@ ATTRIBUTE_NODE
Definition dom_node.h:87
@ CDATA_SECTION_NODE
Definition dom_node.h:89
@ DOCUMENT_TYPE_NODE
Definition dom_node.h:95
@ TEXT_NODE
Definition dom_node.h:88
DomDocumentType to_document_type() const
Returns the Document Type interface to this node.
bool is_comment() const
Returns true if this is a comment node.
bool is_attr() const
Returns true if this is an attribute node.
DomNode named_item(const DomString &name) const
Returns the first child node with the specified node name.
bool select_bool(const DomString &xpath_expression) const
Returns the first node value (as boolean) matching the specified xpath expression using this node as ...
DomProcessingInstruction to_processing_instruction() const
Returns the Processing Instruction interface to this node.
DomString get_node_value() const
Returns the node value.
DomDocument to_document() const
Returns the Document interface to this node.
bool is_notation() const
Returns true if this is a notation node.
DomNode(const DomNode &copy)
Constructs a DomNode.
DomString get_namespace_uri() const
Returns the namespace URI of this node.
DomElement to_element() const
Returns the Element interface to this node.
bool has_attributes() const
Returns true if this node (if its an element) has any attributes.
DomNode(DomDocument doc, unsigned short node_type)
void normalize()
Merges any adjacent Text nodes.
DOM Notation class.
Definition dom_notation.h:49
DOM Processing Instruction class.
Definition dom_processing_instruction.h:44
DOM Text class.
Definition dom_text.h:55
std::string DomString
Definition dom_string.h:37
Definition clanapp.h:36