Re: document class
Thanks for your help: first of all I tried to fix my xml file to use
namespaces as well as only attributes instead of values: I`m not sure
if my xml notation for a radiobuttongroup as well as a selection box
field (or combo-box) is ok - maybe there are some suggestions for
improvement...
<?xml version="1.0" encoding="UTF-8"?>
<Usercfg>
<!-- name of the xml file configuration -->
<Name>default configuration</Name>
<!-- checkbox config display:State -->
<display:Config xmlns:display="#">
<display:Brightness disabled="false" level="20" />
<display:State disabled="false" checked="checked" />
</display:Config>
<!-- radio button config ethernet:Sel -->
<ethernet:Config xmlns:ethernet="#">
<ethernet:Sel groupName="ipcfg" checked="true" id="dhcp"
level="DHCP"/>
<ethernet:Sel groupName="ipcfg" checked="false" id="statip"
level="IP"/>
<ethernet:Ip disable="false" level="192.168.23.1" />
</ethernet:Config>
<!-- select box config language:Sel -->
<language:Support xmlns:language="#">
<language:Sel disabled="false">
<language:English selected="true" level="English" />
<language:German selected="false" level="German" />
</language:Sel>
<language:State disable="false" checked="checked" />
</language:Support>
</Usercfg>
Maybe there`s also a better place to install the xmlns attributes,
because during parsing the xml file I will also get these attributes
which should not be part of the std::map file.
Do you install one std::map or several std::maps - one for every node
(e.g. display:brightness, display:state)? Because if I use only one
map, I can`t install all attributes of all nodes in this file because
the key value must be unique.
:
|
+---display:brightness
| <disabled> <true>
| <level> <50>
|
+---display:state
| <disabled> <false>
| <checked> <true>
|
:
In the header file of my xml file class:
protected:
std::map<CString, CString> DisplayBrightnessNode;
std::map<CString, CString> DisplayStateNode;
cpp:
//with hardcoded values for demonstration:
DisplayBrightnessNode[_T("disabled")] = _T("true");
DisplayBrightnessNode[_T("level")] = _T("50");
DisplayStateNode[_T("disabled")] = _T("false");
DisplayStateNode[_T("checked")] = _T("true");
With this purpose I`ll need round about 100 maps to get all
information stored from the xml file. But using one std:map is not
sufficient for all required information (attributes: level, checked,
disabled....).
After parsing the attributes for one node (display::brightness) it is
also not easy to determine which std::map is responsible for these
information
if(nodename == _T("display:brightness"))
{
DisplayBrightnessNode[_T("specific key")] = _T("specific value");
}
else if(nodename == _T("display:state))
{
DisplayStateNode[_T("specific key")] = _T("specific value");
}
If I will use only one single std::map I`ve to use a struct which
contains all possible attributes for one node
struct multi_value
{
CString disabled;
CString checked;
CString selected;
CString level;
};
std::map<string, multi_value> AllNodes;
multi_value multi;
AllNodes[_T("display::brightness")] = multi;
best regards
Hans