172 lines
23 KiB
HTML
172 lines
23 KiB
HTML
<!-- HTML header for doxygen 1.8.8-->
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<!-- For Mobile Devices -->
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta name="generator" content="Doxygen 1.8.12"/>
|
|
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
|
|
<title>exml: Ewol XML parser: Write an XML content</title>
|
|
<!--<link href="tabs.css" rel="stylesheet" type="text/css"/>-->
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
|
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
|
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
|
|
<script type="text/javascript" src="doxy-boot.js"></script>
|
|
</head>
|
|
<body>
|
|
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
|
|
<div class="container">
|
|
<div class="navbar-header">
|
|
<a class="navbar-brand">exml: Ewol XML parser 0.7.0</a>
|
|
</div>
|
|
<div id="navbar" class="navbar-collapse collapse">
|
|
<ul class="nav navbar-nav">
|
|
<li><a href="index.html">Main Page</a></li>
|
|
<li><a href="pages.html">Related Pages</a></li>
|
|
<li><a href="namespaces.html">Namespaces</a></li>
|
|
<li><a href="annotated.html">Classes</a></li>
|
|
<li><a href="files.html">Files</a></li>
|
|
</ul>
|
|
<ul class="nav navbar-nav navbar-right">
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
|
Link-libs<span class="caret"></span>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="http://HeeroYui.github.io/lutin">lutin</a></li>
|
|
<li><a href="http://atria-soft.github.io/ewol">ewol</a></li>
|
|
<li><a href="http://atria-soft.github.io/echrono">echrono</a></li>
|
|
<li><a href="http://atria-soft.github.io/etk">etk</a></li>
|
|
<li><a href="http://atria-soft.github.io/ejson">ejson</a></li>
|
|
<li><a href="http://atria-soft.github.io/exml">exml</a></li>
|
|
<li><a href="http://atria-soft.github.io/esvg">esvg</a></li>
|
|
<li><a href="http://atria-soft.github.io/egami">egami</a></li>
|
|
<li><a href="http://atria-soft.github.io/gale">gale</a></li>
|
|
<li><a href="http://atria-soft.github.io/ege">ege</a></li>
|
|
<li><a href="http://atria-soft.github.io/elog">elog</a></li>
|
|
<li><a href="http://atria-soft.github.io/ememory">ememory</a></li>
|
|
<li><a href="http://atria-soft.github.io/enet">enet</a></li>
|
|
<li><a href="http://atria-soft.github.io/eproperty">eproperty</a></li>
|
|
<li><a href="http://atria-soft.github.io/esignal">esignal</a></li>
|
|
<li><a href="http://atria-soft.github.io/etranslate">etranslate</a></li>
|
|
<li><a href="http://atria-soft.github.io/zeus">zeus</a></li>
|
|
<li><a href="http://musicdsp.github.io/audio-ess">audio-ess</a></li>
|
|
<li><a href="http://musicdsp.github.io/audio">audio</a></li>
|
|
<li><a href="http://musicdsp.github.io/audio-drain">audio-drain</a></li>
|
|
<li><a href="http://musicdsp.github.io/audio-orchestra">audio-orchestra</a></li>
|
|
<li><a href="http://musicdsp.github.io/audio-river">audio-river</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<div id="search-box" class="input-group">
|
|
<div class="input-group-btn">
|
|
<button aria-expanded="false" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
|
<span class="glyphicon glyphicon-search"></span>
|
|
<span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="#">All</a></li>
|
|
<li><a href="#">Classes</a></li>
|
|
<li><a href="#">Namespaces</a></li>
|
|
<li><a href="#">Files</a></li>
|
|
<li><a href="#">Functions</a></li>
|
|
<li><a href="#">Variables</a></li>
|
|
<li><a href="#">Typedefs</a></li>
|
|
<li><a href="#">Enumerations</a></li>
|
|
<li><a href="#">Enumerator</a></li>
|
|
<li><a href="#">Friends</a></li>
|
|
<li><a href="#">Macros</a></li>
|
|
<li><a href="#">Pages</a></li>
|
|
</ul>
|
|
</div>
|
|
<button id="search-close" type="button" class="close" aria-label="Close">
|
|
<span aria-hidden="true"></span>
|
|
</button>
|
|
<input id="search-field" class="form-control" accesskey="S" onkeydown="searchBox.OnSearchFieldChange(event);" placeholder="Search ..." type="text">
|
|
</div>
|
|
</div><!--/.nav-collapse -->
|
|
</div>
|
|
</nav>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div class="content" id="content">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-12 panel panel-default" style="padding-bottom: 15px;">
|
|
<div style="margin-bottom: 15px;margin-top: 60px;">
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.12 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">Write an XML content </div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="toc"><h3>Table of Contents</h3>
|
|
<ul><li class="level1"><a href="#exml_tutorial_write_file">Write an XML file </a></li>
|
|
<li class="level1"><a href="#exml_tutorial_write_stream">Write an XML Stream </a></li>
|
|
<li class="level1"><a href="#exml_tutorial_write_operation">Operation on Tree </a></li>
|
|
<li class="level1"><a href="#exml_tutorial_concept">Object concept </a></li>
|
|
<li class="level1"><a href="#exml_tutorial_write_all">All example file </a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="textblock"><p>The first thing to do when reading or writing a XML file/stream, is to declare the Document interface</p>
|
|
<p>Include exml </p><div class="fragment"><div class="line"><span class="preprocessor">#include <<a class="code" href="exml_8hpp.html">exml/exml.hpp</a>></span></div></div><!-- fragment --><p> Declare document interface </p><div class="fragment"><div class="line"> <a class="code" href="classexml_1_1_document.html">exml::Document</a> doc;</div></div><!-- fragment --><h1><a class="anchor" id="exml_tutorial_write_file"></a>
|
|
Write an XML file </h1>
|
|
<p>Write an xml tree is done like: </p><div class="fragment"><div class="line"> <span class="keywordtype">bool</span> retGenerate = doc.<a class="code" href="classexml_1_1_document.html#a58f6fdea9c7a2c462fa2610eca06c244">store</a>(<span class="stringliteral">"generate.xml"</span>);</div></div><!-- fragment --><h1><a class="anchor" id="exml_tutorial_write_stream"></a>
|
|
Write an XML Stream </h1>
|
|
<p>Writing a stream is done like this: </p><div class="fragment"><div class="line"> std::string streamOut;</div><div class="line"> <span class="keywordtype">bool</span> retGenerate = doc.<a class="code" href="classexml_1_1_document.html#a9585c61100b7816294899843452996e8">generate</a>(streamOut);</div></div><!-- fragment --> <h1><a class="anchor" id="exml_tutorial_write_operation"></a>
|
|
Operation on Tree </h1>
|
|
<p>Add Node/Declaration: </p><div class="fragment"><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_declaration.html">exml::Declaration</a>(<span class="stringliteral">"2.5"</span>));</div></div><!-- fragment --><p> Add an Node/Element: </p><div class="fragment"><div class="line"> <a class="code" href="classexml_1_1_element.html">exml::Element</a> elem = <a class="code" href="classexml_1_1_element.html">exml::Element</a>(<span class="stringliteral">"exml"</span>);</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(elem);</div></div><!-- fragment --><p> Remove a Node/Element: </p><div class="fragment"><div class="line"> <span class="comment">// remove all node with this name</span></div><div class="line"> elem.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#a358814eb35fe9025565185055b8b3782">remove</a>(<span class="stringliteral">"attr1"</span>);</div></div><!-- fragment --><p>Add an attribute (simple version): </p><div class="fragment"><div class="line"> elem.<a class="code" href="classexml_1_1_attribute_list.html#ae5ecfeb8362dc2dd0481ec74e56f19dd">attributes</a>.<a class="code" href="classexml_1_1_attribute_list_data.html#a5e585c31979c0d042bcfc46a4972cfe8">set</a>(<span class="stringliteral">"attr1"</span>, <span class="stringliteral">"value attr 1"</span>);</div></div><!-- fragment --><p> Add an attribute (complex version): </p><div class="fragment"><div class="line"> elem.<a class="code" href="classexml_1_1_attribute_list.html#ae5ecfeb8362dc2dd0481ec74e56f19dd">attributes</a>.<a class="code" href="classexml_1_1_attribute_list_data.html#ac997083aa5cfc557cfbb7bfd77dd7985">add</a>(<a class="code" href="classexml_1_1_attribute.html">exml::Attribute</a>(<span class="stringliteral">"attr2"</span>, <span class="stringliteral">"value attr 2"</span>));</div></div><!-- fragment --><p> Remove an attribute: </p><div class="fragment"><div class="line"> elem.<a class="code" href="classexml_1_1_attribute_list.html#ae5ecfeb8362dc2dd0481ec74e56f19dd">attributes</a>.<a class="code" href="classexml_1_1_attribute_list_data.html#a0d67c91ee8a344f235e8d7c30e7bc174">remove</a>(<span class="stringliteral">"attr1"</span>);</div></div><!-- fragment --> <h1><a class="anchor" id="exml_tutorial_concept"></a>
|
|
Object concept </h1>
|
|
<p>the exml concept is to abstract the implementation of the internal system. All the element are maped on shared memory. Then if you asign an element to an other, it is the same. You need to clone it if you want to have new standalone element.</p>
|
|
<h1><a class="anchor" id="exml_tutorial_write_all"></a>
|
|
All example file </h1>
|
|
<div class="fragment"><div class="line"></div><div class="line"><span class="preprocessor">#include <test-debug/debug.hpp></span></div><div class="line"><span class="preprocessor">#include <<a class="code" href="exml_8hpp.html">exml/exml.hpp</a>></span></div><div class="line"><span class="preprocessor">#include "write.hpp"</span></div><div class="line"></div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> writeToFile() {</div><div class="line"> <a class="code" href="classexml_1_1_document.html">exml::Document</a> doc;</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_declaration.html">exml::Declaration</a>(<span class="stringliteral">"2.5"</span>));</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_element.html">exml::Element</a>(<span class="stringliteral">"node1"</span>));</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_element.html">exml::Element</a>(<span class="stringliteral">"node2"</span>));</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_comment.html">exml::Comment</a>(<span class="stringliteral">"basic comment"</span>));</div><div class="line"> TEST_INFO(<span class="stringliteral">"store"</span>);</div><div class="line"> <span class="keywordtype">bool</span> retGenerate = doc.<a class="code" href="classexml_1_1_document.html#a58f6fdea9c7a2c462fa2610eca06c244">store</a>(<span class="stringliteral">"generate.xml"</span>);</div><div class="line"> TEST_INFO(<span class="stringliteral">"parse ret = "</span> << retGenerate);</div><div class="line"> TEST_INFO(<span class="stringliteral">"Debug display of the tree:"</span>);</div><div class="line"> doc.<a class="code" href="classexml_1_1_document.html#a2257dc9efd8074f8a0d38f73725337d9">display</a>();</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> writeToString() {</div><div class="line"> <a class="code" href="classexml_1_1_document.html">exml::Document</a> doc;</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_declaration.html">exml::Declaration</a>(<span class="stringliteral">"2.5"</span>));</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_element.html">exml::Element</a>(<span class="stringliteral">"node1"</span>));</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_element.html">exml::Element</a>(<span class="stringliteral">"node2"</span>));</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_comment.html">exml::Comment</a>(<span class="stringliteral">"basic comment"</span>));</div><div class="line"> TEST_INFO(<span class="stringliteral">"generate"</span>);</div><div class="line"> std::string streamOut;</div><div class="line"> <span class="keywordtype">bool</span> retGenerate = doc.<a class="code" href="classexml_1_1_document.html#a9585c61100b7816294899843452996e8">generate</a>(streamOut);</div><div class="line"> TEST_INFO(<span class="stringliteral">"parse ret = "</span> << retGenerate);</div><div class="line"> TEST_INFO(<span class="stringliteral">"Debug display of the tree:"</span>);</div><div class="line"> doc.<a class="code" href="classexml_1_1_document.html#a2257dc9efd8074f8a0d38f73725337d9">display</a>();</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> writeAll() {</div><div class="line"> <a class="code" href="classexml_1_1_document.html">exml::Document</a> doc;</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_declaration.html">exml::Declaration</a>(<span class="stringliteral">"2.5"</span>));</div><div class="line"> <a class="code" href="classexml_1_1_element.html">exml::Element</a> elem = <a class="code" href="classexml_1_1_element.html">exml::Element</a>(<span class="stringliteral">"exml"</span>);</div><div class="line"> doc.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(elem);</div><div class="line"> </div><div class="line"> elem.<a class="code" href="classexml_1_1_attribute_list.html#ae5ecfeb8362dc2dd0481ec74e56f19dd">attributes</a>.<a class="code" href="classexml_1_1_attribute_list_data.html#a5e585c31979c0d042bcfc46a4972cfe8">set</a>(<span class="stringliteral">"attr1"</span>, <span class="stringliteral">"value attr 1"</span>);</div><div class="line"> elem.<a class="code" href="classexml_1_1_attribute_list.html#ae5ecfeb8362dc2dd0481ec74e56f19dd">attributes</a>.<a class="code" href="classexml_1_1_attribute_list_data.html#ac997083aa5cfc557cfbb7bfd77dd7985">add</a>(<a class="code" href="classexml_1_1_attribute.html">exml::Attribute</a>(<span class="stringliteral">"attr2"</span>, <span class="stringliteral">"value attr 2"</span>));</div><div class="line"> doc.<a class="code" href="classexml_1_1_document.html#a2257dc9efd8074f8a0d38f73725337d9">display</a>();</div><div class="line"> </div><div class="line"> elem.<a class="code" href="classexml_1_1_attribute_list.html#ae5ecfeb8362dc2dd0481ec74e56f19dd">attributes</a>.<a class="code" href="classexml_1_1_attribute_list_data.html#a0d67c91ee8a344f235e8d7c30e7bc174">remove</a>(<span class="stringliteral">"attr1"</span>);</div><div class="line"> </div><div class="line"> elem.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_element.html">exml::Element</a>(<span class="stringliteral">"node1"</span>));</div><div class="line"> elem.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_element.html">exml::Element</a>(<span class="stringliteral">"node2"</span>));</div><div class="line"> elem.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#aa70c78eeee7d8bc271afe62a273ee264">add</a>(<a class="code" href="classexml_1_1_element.html">exml::Element</a>(<span class="stringliteral">"node1"</span>));</div><div class="line"> </div><div class="line"> <span class="comment">// remove all node with this name</span></div><div class="line"> elem.<a class="code" href="classexml_1_1_element.html#acf09c48748366af9925513ed978db4c9">nodes</a>.<a class="code" href="classexml_1_1_element_data.html#a358814eb35fe9025565185055b8b3782">remove</a>(<span class="stringliteral">"attr1"</span>);</div><div class="line">}</div><div class="line"></div><div class="line"></div><div class="line"><span class="keywordtype">void</span> appl::write() {</div><div class="line"> writeToFile();</div><div class="line"> writeToString();</div><div class="line"> writeAll();</div><div class="line">}</div><div class="line"></div></div><!-- fragment --> </div></div><!-- contents -->
|
|
<!-- HTML footer for doxygen 1.8.8-->
|
|
<!-- start footer part -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Mon Oct 24 2016 15:35:49 for exml: Ewol XML parser by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.8.12
|
|
</small></address>
|
|
</body>
|
|
</html>
|