青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Codejie's C++ Space

Using C++

記錄:wxXmlNode的使用


??? 這兩天在個朋友Yao寫一個很簡單而繁瑣的程序--學生排座程序。說簡單,是需求很簡單,就是隨機排座;說繁瑣是在很多細節和GUI實現上累的我半死。想想,我還是喜歡寫console程序。。。
??? 程序中的文件存儲操作采用的是xml格式,以前我都使用TinyXML,一個很小,很好用的XML庫。由于這次程序使用的是wxWidgets,因此XML部分也就使用wxWidgets提供的wxXmlDocument/wxXmlNode/wxXmlProperty了。這幾個對象的名字在TinyXML中都有相對應的對象,上手也快,但細節上有些不同,尤其是wxXmlNodeType這個類型的使用上。

enum?wxXmlNodeType
{
????
//?note:?values?are?synchronized?with?xmlElementType?from?libxml
????wxXML_ELEMENT_NODE???????=??1,
????wxXML_ATTRIBUTE_NODE?????
=??2,
????wxXML_TEXT_NODE??????????
=??3,
????wxXML_CDATA_SECTION_NODE?
=??4,
????wxXML_ENTITY_REF_NODE????
=??5,
????wxXML_ENTITY_NODE????????
=??6,
????wxXML_PI_NODE????????????
=??7,
????wxXML_COMMENT_NODE???????
=??8,
????wxXML_DOCUMENT_NODE??????
=??9,
????wxXML_DOCUMENT_TYPE_NODE?
=?10,
????wxXML_DOCUMENT_FRAG_NODE?
=?11,
????wxXML_NOTATION_NODE??????
=?12,
????wxXML_HTML_DOCUMENT_NODE?
=?13
}
;


??? 下面是使用wxWidgets中XML對象的open/save操作代碼,記錄下。
??1int?CManageObject::Open(const?wxString?&file)
??2{
??3????wxXmlDocument?doc;
??4????if(!doc.Load(file))
??5????????return?-1;
??6????
??7????wxXmlNode*?root?=?doc.GetRoot();
??8????if(root?==?NULL)
??9????????return?-1;
?10????wxString?str?=?root->GetName();
?11????if(str?!=?wxT("RunSite"))
?12????????return?-1;
?13
?14????New();
?15
?16????wxXmlNode*?si?=?root->GetChildren();
?17????if(si?==?NULL)
?18????????return?-1;
?19????str?=?si->GetName();
?20????if(str?!=?wxT("SiteInfo"))
?21????????return?-1;
?22????wxXmlNode*?col?=?si->GetChildren();
?23????if(col?==?NULL)
?24????????return?-1;
?25????str?=?col->GetName();
?26????if(str?!=?wxT("Col"))
?27????????return?-1;
?28????str?=?col->GetNodeContent();
?29????if(!str.ToLong(&m_data.col))
?30????????return?-1;
?31????wxXmlNode*?row?=?col->GetNext();
?32????if(row?==?NULL)
?33????????return?-1;
?34????str?=?row->GetName();
?35????if(str?!=?wxT("Row"))
?36????????return?-1;
?37????str?=?row->GetNodeContent();
?38????if(!str.ToLong(&m_data.row))
?39????????return?-1;
?40
?41????wxXmlNode*?special?=?row->GetNext();
?42????if(special?!=?NULL)
?43????{
?44????????m_data.sitespecial?=?true;
?45????????if(special->GetName()?!=?wxT("Special"))
?46????????????return?-1;
?47????????wxXmlNode*?s?=?special->GetChildren();
?48????????if(s?==?NULL?||?s->GetName()?!=?wxT("ColRange"))
?49????????????return?-1;
?50????????wxXmlProperty*?p?=?s->GetProperties();
?51????????if(p?==?NULL?||?p->GetName()?!=?wxT("begin"))
?52????????????return?-1;
?53????????if(!p->GetValue().ToLong(&m_data.bcol))
?54????????????return?-1;
?55????????p?=?p->GetNext();
?56????????if(p?==?NULL?||?p->GetName()?!=?wxT("end"))
?57????????????return?-1;
?58????????if(!p->GetValue().ToLong(&m_data.ecol))
?59????????????return?-1;
?60
?61????????s?=?s->GetNext();
?62????????if(s?==?NULL?||?s->GetName()?!=?wxT("RowRange"))
?63????????????return?-1;
?64????????p?=?s->GetProperties();
?65????????if(p?==?NULL?||?p->GetName()?!=?wxT("begin"))
?66????????????return?-1;
?67????????if(!p->GetValue().ToLong(&m_data.brow))
?68????????????return?-1;
?69????????p?=?p->GetNext();
?70????????if(p?==?NULL?||?p->GetName()?!=?wxT("end"))
?71????????????return?-1;
?72????????if(!p->GetValue().ToLong(&m_data.erow))
?73????????????return?-1;
?74????}

?75????else
?76????{
?77????????m_data.sitespecial?=?false;
?78????}

?79
?80????wxXmlNode*?bi?=?si->GetNext();
?81????if(bi?==?NULL?||?bi->GetName()?!=?wxT("BoxInfo"))
?82????????return?-1;
?83????wxXmlNode*?b?=?bi->GetChildren();
?84????while(b?!=?NULL)
?85????{
?86????????if(b->GetName()?!=?wxT("Box"))
?87????????????return?-1;
?88????????Data::box_t?box;
?89????????wxXmlProperty*?p?=?b->GetProperties();
?90????????if(p?==?NULL?||?p->GetName()?!=?wxT("id"))
?91????????????return?-1;
?92????????box.id?=?p->GetValue();
?93
?94????????p?=?p->GetNext();
?95????????if(p?==?NULL?||?p->GetName()?!=?wxT("name"))
?96????????????return?-1;
?97????????box.name?=?p->GetValue();
?98
?99????????p?=?p->GetNext();
100????????if(p?!=?NULL)
101????????{
102????????????if(p->GetName()?!=?wxT("special"))
103????????????????return?-1;
104????????????if(p->GetValue()?==?wxT("T"))
105????????????????box.special?=?true;
106????????????else
107????????????????box.special?=?false;
108????????}

109????????else
110????????{
111????????????box.special?=?false;
112????????}

113
114????????m_data.vct.push_back(box);
115
116????????b?=?b->GetNext();
117????}

118
119????return?0;
120}

121
122int?CManageObject::Save(const?wxString?&file)
123{
124????wxXmlNode*?cx?=?NULL;
125????wxXmlNode*?root?=?new?wxXmlNode(NULL,?wxXML_ELEMENT_NODE,?wxT("RunSite"));????
126
127//SiteInfo
128????wxXmlNode*?si?=?new?wxXmlNode(NULL,?wxXML_ELEMENT_NODE,?wxT("SiteInfo"),?wxEmptyString);
129
130????wxXmlNode*?col?=?new?wxXmlNode(wxXML_ELEMENT_NODE,?wxT("Col"));
131????cx?=?new?wxXmlNode(wxXML_TEXT_NODE,?wxEmptyString,?wxString::Format(wxT("%d"),?m_data.col));
132????col->AddChild(cx);
133????si->AddChild(col);
134????wxXmlNode*?row?=?new?wxXmlNode(wxXML_ELEMENT_NODE,?wxT("Row"));
135????cx?=?new?wxXmlNode(wxXML_TEXT_NODE,?wxEmptyString,?wxString::Format(wxT("%d"),?m_data.row));
136????row->AddChild(cx);
137????si->AddChild(row);
138
139????wxXmlNode*?sp?=?NULL;
140
141????if(m_data.sitespecial)
142????{
143????????wxXmlNode*?sp?=?new?wxXmlNode(NULL,?wxXML_ELEMENT_NODE,?wxT("Special"));
144
145????????wxXmlProperty*?e?=?new?wxXmlProperty(wxT("end"),?wxString::Format(wxT("%d"),?m_data.ecol));
146????????wxXmlProperty*?b?=?new?wxXmlProperty(wxT("begin"),?wxString::Format(wxT("%d"),?m_data.bcol),?e);
147????????wxXmlNode*?c?=?new?wxXmlNode(NULL,?wxXML_ELEMENT_NODE,?wxT("ColRange"),?wxEmptyString,?b);
148//????????c->AddProperty(b);
149????????
150????????sp->AddChild(c);
151
152????????
153????????e?=?new?wxXmlProperty(wxT("end"),?wxString::Format(wxT("%d"),?m_data.erow));
154????????b?=?new?wxXmlProperty(wxT("begin"),?wxString::Format(wxT("%d"),?m_data.brow),?e);
155????????wxXmlNode*?r?=?new?wxXmlNode(NULL,?wxXML_ELEMENT_NODE,?wxT("RowRange"),?wxEmptyString,?b);
156//????????r->AddProperty(b);
157????????sp->AddChild(r);
158
159????????si->AddChild(sp);
160????}

161
162????root->AddChild(si);
163
164//Box?Info
165????wxXmlNode*?bi?=?new?wxXmlNode(NULL,?wxXML_ELEMENT_NODE,?wxT("BoxInfo"));
166????for(Data::TBoxVector::const_iterator?it?=?m_data.vct.begin();?it?!=?m_data.vct.end();?++?it)
167????{
168????????wxXmlProperty*?s?=?NULL;
169????????if(it->special)
170????????????s?=?new?wxXmlProperty(wxT("special"),?wxT("T"));
171
172????????wxXmlProperty*?n?=?new?wxXmlProperty(wxT("name"),?it->name,?s);
173????????wxXmlProperty*?i?=?new?wxXmlProperty(wxT("id"),?it->id,?n);
174????????wxXmlNode*?b?=?new?wxXmlNode(NULL,?wxXML_ELEMENT_NODE,?wxT("Box"),?wxEmptyString,?i);
175//????????b->AddProperty(i);
176
177????????bi->AddChild(b);
178????}

179
180????root->AddChild(bi);
181
182????wxXmlDocument?doc;
183????doc.SetRoot(root);
184????if(!doc.Save(file))
185????????return?-1;
186
187????return?0;
188}

??? 邊學邊寫,凌亂的狠,還好,想來朋友Yao不會關心代碼是怎么寫的,只是自己看著不舒服了~對應的XML文件如下:
<?xml?version="1.0"?encoding="utf-8"?>
<RunSite>
??
<SiteInfo>
????
<Col>3</Col>
????
<Row>4</Row>
????
<Special>
??????
<ColRange?begin="2"?end="3"/>
??????
<RowRange?begin="3"?end="4"/>
????
</Special>
??
</SiteInfo>
??
<BoxInfo>
????
<Box?id="1"?name="11"/>
????
<Box?id="2"?name="22"?special="T"/>
??
</BoxInfo>
</RunSite>

posted on 2009-10-23 13:57 codejie 閱讀(1312) 評論(2)  編輯 收藏 引用 所屬分類: C++

評論

# re: 記錄:wxXmlNode的使用[未登錄] 2009-10-24 01:49 Liu

你現在很高產么……  回復  更多評論   

# re: 記錄:wxXmlNode的使用 2009-10-26 09:35 codejie

高產是因為給Yao的程序寫的差不多了~  回復  更多評論   

公告

Using C++

導航

統計

留言簿(73)

隨筆分類(513)

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老司机一区二区三区| 久久久久国产精品厨房| 国产精品卡一卡二| 欧美成人蜜桃| 99riav1国产精品视频| 欧美日韩第一页| 亚洲欧美国产三级| 西西人体一区二区| 久久艳片www.17c.com| 美女在线一区二区| 欧美三区在线观看| 另类人畜视频在线| 亚洲一区高清| 欧美一区免费视频| 欧美黑人在线播放| 久久国产夜色精品鲁鲁99| 久久精品观看| 亚洲欧美久久久| 久久久精品网| 国产精品久久久久秋霞鲁丝| 激情久久久久| 国产欧美综合在线| 欧美日韩免费看| 国产婷婷一区二区| 亚洲精品自在在线观看| 亚洲激情国产精品| 在线激情影院一区| 亚洲深夜激情| 亚洲午夜视频| 另类春色校园亚洲| 亚洲一区二区三区四区五区黄 | 西西裸体人体做爰大胆久久久 | 亚洲男人的天堂在线| 欧美第一黄色网| 亚洲午夜精品一区二区三区他趣 | 一区电影在线观看| 亚洲国产三级网| 欧美一区二区网站| 亚洲一区二区三区在线看| 亚洲精品国产精品国自产观看浪潮 | 亚洲电影网站| 欧美二区在线播放| 亚洲欧美在线aaa| 欧美日韩精品免费| 亚洲精品久久久久久一区二区| 久久精品欧美| 狂野欧美激情性xxxx| 在线一区免费观看| 亚洲午夜av在线| 亚洲天堂网在线观看| 欧美韩日亚洲| 欧美午夜一区二区| 91久久精品日日躁夜夜躁国产| 久久久久久综合网天天| 亚洲欧美日韩一区二区| 欧美影院一区| 久久精品动漫| 国产欧美精品日韩| 欧美在线日韩精品| 欧美国产第二页| 91久久精品国产91久久性色tv | 国产精品免费看| 一区二区三区欧美在线| 亚洲色图制服丝袜| 亚洲欧洲99久久| 久久亚洲春色中文字幕| 久久精品成人一区二区三区蜜臀| 久久综合久久综合九色| 欧美电影专区| 亚洲精品久久视频| 亚洲精品麻豆| 国产精品久久久久久久久久ktv| 亚洲午夜未删减在线观看| 久久精品99久久香蕉国产色戒 | 欧美激情久久久久| 一本高清dvd不卡在线观看| 性色一区二区| 久久全国免费视频| 久久精品亚洲| 最新中文字幕亚洲| 在线视频欧美一区| 国产一区深夜福利| 亚洲国产精品高清久久久| 欧美精品手机在线| 性做久久久久久久久| 久久精品一区蜜桃臀影院| 久久成人精品电影| 久久大香伊蕉在人线观看热2| 国产精品自拍小视频| 一区二区三区在线免费视频| 美女在线一区二区| 欧美女同视频| 亚洲国产欧美一区二区三区同亚洲| 99精品国产99久久久久久福利| 91久久久国产精品| 久久精品成人一区二区三区| 亚洲国产精品www| 日韩亚洲不卡在线| 激情成人av| 久久综合九色欧美综合狠狠| 久久视频一区| 亚洲欧美在线另类| 一本综合久久| 黄色日韩精品| 欧美一区影院| 免费看精品久久片| 久久国产精品亚洲va麻豆| 欧美精品一区二区视频| 久久久噜噜噜久久| 香蕉乱码成人久久天堂爱免费| 尤物99国产成人精品视频| 一区二区三区高清在线| 亚洲三级影院| 久久免费偷拍视频| 欧美综合国产精品久久丁香| 午夜精品久久久久久久久久久久久 | 欧美一区二区三区四区在线观看| 亚洲黄色一区二区三区| 国产区欧美区日韩区| 欧美呦呦网站| 欧美激情综合五月色丁香小说| 亚洲经典三级| 亚洲高清视频一区| 国产一区亚洲| 男女激情视频一区| 国产精品在线看| 久久久久久久激情视频| 国产精品vip| 久久精品国产在热久久| 欧美日韩一级片在线观看| 亚洲欧美日韩国产中文| 免费在线成人av| 欧美激情影音先锋| 亚洲精品视频中文字幕| 中文亚洲视频在线| 在线一区亚洲| 国产精品激情| 午夜一区二区三区在线观看 | 日韩午夜电影| 亚洲欧美日韩国产成人| 午夜精品国产| 蜜臀av国产精品久久久久| 久久婷婷久久| 毛片av中文字幕一区二区| 激情六月婷婷久久| 亚洲电影自拍| 亚洲清纯自拍| 欧美三级欧美一级| 亚洲一区亚洲| 久久精品成人| 欧美日韩午夜在线视频| 99riav久久精品riav| 亚洲男女自偷自拍| 国产中文一区二区| 亚洲免费黄色| 亚洲免费视频一区二区| 久久久成人网| 亚洲资源av| 国产精品日韩欧美一区二区| 亚久久调教视频| 久久久久综合网| 日韩午夜视频在线观看| 国产精品一区二区在线| 久久久久久亚洲精品不卡4k岛国| 亚洲影院一区| 国产欧美日韩专区发布| 亚洲理伦在线| 一区二区在线观看视频| 欧美成人黑人xx视频免费观看 | 久久亚洲电影| 日韩一二三在线视频播| 久久久久久久久蜜桃| 国产精品theporn| 欧美激情小视频| 中文精品视频| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲一区二区三区四区五区黄| 亚洲激情视频| 久久精品一区| 99国产精品久久久久久久久久 | 亚洲一区二区三区色| 亚洲午夜一区| 欧美精品色网| 久久av一区二区三区亚洲| 亚洲欧美一区二区三区极速播放 | 欧美一区二区成人| 欧美性做爰毛片| 最新成人av网站| 亚洲欧洲在线视频| 欧美不卡激情三级在线观看| 亚洲尤物在线| 欧美资源在线| 国产一区999| 欧美性色aⅴ视频一区日韩精品| 久久久久久久尹人综合网亚洲| 久久久久高清| 午夜精品一区二区三区在线视 | 国产亚洲综合在线| 国产精品毛片大码女人| 亚洲一区二区三区四区中文 |