Update references to online documentation.
[qt:qt-ios-plaszma.git] / doc / src / snippets / code / src_xml_dom_qdom.cpp
1 //! [0]
2 QDomDocument doc;
3 QDomImplementation impl;
4
5 // This will create the element, but the resulting XML document will
6 // be invalid, because '~' is not a valid character in a tag name.
7 impl.setInvalidDataPolicy(QDomImplementation::AcceptInvalidData);
8 QDomElement elt1 = doc.createElement("foo~bar");
9
10 // This will create an element with the tag name "foobar".
11 impl.setInvalidDataPolicy(QDomImplementation::DropInvalidData);
12 QDomElement elt2 = doc.createElement("foo~bar");
13
14 // This will create a null element.
15 impl.setInvalidDataPolicy(QDomImplementation::ReturnNullNode);
16 QDomElement elt3 = doc.createElement("foo~bar");
17 //! [0]
18
19
20 //! [1]
21 QDomDocument d;
22 d.setContent(someXML);
23 QDomNode n = d.firstChild();
24 while (!n.isNull()) {
25     if (n.isElement()) {
26         QDomElement e = n.toElement();
27         cout << "Element name: " << e.tagName() << endl;
28         break;
29     }
30     n = n.nextSibling();
31 }
32 //! [1]
33
34
35 //! [2]
36 QDomDocument document;
37 QDomElement element1 = document.documentElement();
38 QDomElement element2 = element1;
39 //! [2]
40
41
42 //! [3]
43 QDomElement element3 = document.createElement("MyElement");
44 QDomElement element4 = document.createElement("MyElement");
45 //! [3]
46
47
48 //! [4]
49 <body>
50 <h1>Heading</h1>
51 <p>Hello <b>you</b></p>
52 </body>
53 //! [4]
54
55
56 //! [5]
57 <h1>Heading</h1>
58 <p>The text...</p>
59 <h2>Next heading</h2>
60 //! [5]
61
62
63 //! [6]
64 <h1>Heading</h1>
65 <p>The text...</p>
66 <h2>Next heading</h2>
67 //! [6]
68
69
70 //! [7]
71 <link href="http://qt.nokia.com" color="red" />
72 //! [7]
73
74
75 //! [8]
76 QDomElement e = //...
77 //...
78 QDomAttr a = e.attributeNode("href");
79 cout << a.value() << endl;                // prints "http://qt.nokia.com"
80 a.setValue("http://qt.nokia.com/doc"); // change the node's attribute
81 QDomAttr a2 = e.attributeNode("href");
82 cout << a2.value() << endl;               // prints "http://qt.nokia.com/doc"
83 //! [8]
84
85
86 //! [9]
87 QDomElement e = //...
88 //...
89 QString s = e.text()
90 //! [9]
91
92
93 //! [10]
94 QString text;
95 QDomElement element = doc.documentElement();
96 for(QDomNode n = element.firstChild(); !n.isNull(); n = n.nextSibling())
97 {
98     QDomText t = n.toText();
99     if (!t.isNull())
100         text += t.data();
101 }
102 //! [10]
103
104
105 //! [11]
106 QDomDocument doc = // ...
107 QDomElement root = doc.firstChildElement("database");
108 QDomElement elt = root.firstChildElement("entry");
109 for (; !elt.isNull(); elt = elt.nextSiblingElement("entry")) {
110     // ...
111 }
112 //! [11]
113
114
115 //! [12]
116 <img src="myimg.png">
117 //! [12]
118
119
120 //! [13]
121 <h1>Hello <b>Qt</b> <![CDATA[<xml is cool>]]></h1>
122 //! [13]
123
124
125 //! [14]
126 Hello Qt <xml is cool>
127 //! [14]
128
129
130 //! [15]
131 <!-- this is a comment -->
132 //! [15]
133
134
135 //! [16]
136 QDomDocument doc("mydocument");
137 QFile file("mydocument.xml");
138 if (!file.open(QIODevice::ReadOnly))
139     return;
140 if (!doc.setContent(&file)) {
141     file.close();
142     return;
143 }
144 file.close();
145
146 // print out the element names of all elements that are direct children
147 // of the outermost element.
148 QDomElement docElem = doc.documentElement();
149
150 QDomNode n = docElem.firstChild();
151 while(!n.isNull()) {
152     QDomElement e = n.toElement(); // try to convert the node to an element.
153     if(!e.isNull()) {
154         cout << qPrintable(e.tagName()) << endl; // the node really is an element.
155     }
156     n = n.nextSibling();
157 }
158
159 // Here we append a new element to the end of the document
160 QDomElement elem = doc.createElement("img");
161 elem.setAttribute("src", "myimage.png");
162 docElem.appendChild(elem);
163 //! [16]
164
165
166 //! [17]
167 QDomDocument doc("MyML");
168 QDomElement root = doc.createElement("MyML");
169 doc.appendChild(root);
170
171 QDomElement tag = doc.createElement("Greeting");
172 root.appendChild(tag);
173
174 QDomText t = doc.createTextNode("Hello World");
175 tag.appendChild(t);
176
177 QString xml = doc.toString();
178 //! [17]