| | 1 | = XML-Writer = |
| | 2 | |
| | 3 | ''Under construction'' |
| | 4 | |
| | 5 | == Library == |
| | 6 | |
| | 7 | Suggestion: [http://www.codeproject.com/vcpp/stl/simple_xmlwriter.asp Simple C++ class for XML writing] from Oboltus. |
| | 8 | |
| | 9 | Using this class is very very simple, it's all based on the stream operator <<. Here's an example: |
| | 10 | |
| | 11 | {{{ |
| | 12 | ofstream f("sample.xml"); |
| | 13 | XmlStream xml(f); |
| | 14 | |
| | 15 | xml << prolog() // write XML file declaration |
| | 16 | << tag("sample-tag") // root tag |
| | 17 | |
| | 18 | << tag("some-tag") // child tag |
| | 19 | << attr("int-attribute") << 123 |
| | 20 | << attr("double-attribute") << 456.789 |
| | 21 | << chardata() << "This is the text" |
| | 22 | << endtag() // close current tag |
| | 23 | |
| | 24 | << tag("empty-self-closed-tag") // sibling of <some-tag> |
| | 25 | << endtag() |
| | 26 | |
| | 27 | << tag() << "computed-name-tag" |
| | 28 | << attr("text-attr") << "a bit of text" |
| | 29 | << endtag() |
| | 30 | |
| | 31 | << tag("deep-tag") // deep enclosing |
| | 32 | << tag("sub-tag-2") |
| | 33 | << tag("sub-tag-3") |
| | 34 | << endtag("deep-tag"); // close all tags up to specified |
| | 35 | |
| | 36 | // you don't worry about closing all open tags! |
| | 37 | }}} |
| | 38 | |
| | 39 | Result: |
| | 40 | |
| | 41 | {{{ |
| | 42 | <?xml version="1.0"?> |
| | 43 | <sample-tag> |
| | 44 | <some-tag int-attribute="123" double-attribute="456.789">This is the text |
| | 45 | </some-tag> |
| | 46 | <empty-self-closed-tag/> |
| | 47 | <computed-name-tag text-attr="a bit of text"/> |
| | 48 | <deep-tag> |
| | 49 | <sub-tag-2> |
| | 50 | <sub-tag-3/> |
| | 51 | </sub-tag-2> |
| | 52 | </deep-tag> |
| | 53 | </sample-tag> |
| | 54 | }}} |
| | 55 | |
| | 56 | The layout isn't optimal yet, but I'll try to fix that. |
| | 57 | |
| | 58 | = Misc = |
| | 59 | See [wiki:archive/XML-Loader] for an XML-Reader description |