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

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 閱讀(1320) 評論(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>
            久久久成人网| 亚洲专区一区二区三区| 亚洲欧美日本视频在线观看| 性欧美办公室18xxxxhd| 亚洲天堂偷拍| 亚洲欧美日韩视频一区| 亚洲欧美亚洲| 久久av一区二区三区亚洲| 久久av一区二区| 蜜桃av一区二区三区| 亚洲高清一二三区| 日韩亚洲欧美成人| 午夜一区在线| 欧美激情精品久久久六区热门 | 一本色道久久综合亚洲精品不 | 欧美成人精品| 亚洲国产精品久久人人爱蜜臀 | 亚洲一区二区视频在线观看| 在线亚洲精品| 久久免费视频这里只有精品| 欧美激情一区二区在线| 99综合视频| 久久免费黄色| 国产精品看片你懂得| 亚洲激情视频在线播放| 亚洲免费影视| 欧美高清视频在线| 亚洲综合电影| 欧美日韩一区二区三区在线观看免| 国产欧美精品久久| 日韩一二三区视频| 久久综合影视| 西瓜成人精品人成网站| 欧美精品乱码久久久久久按摩| 国产亚洲欧美一区在线观看| 一区二区三区免费在线观看| 久久躁狠狠躁夜夜爽| 99国产精品自拍| 欧美www视频| 国内精品久久久久久久影视蜜臀| 亚洲一区二区在| 亚洲人成人一区二区在线观看| 久久国产精品高清| 国产精品亚洲综合色区韩国| 一本色道久久综合一区| 欧美成人午夜激情| 久久久亚洲影院你懂的| 国产人成一区二区三区影院| 亚洲一区在线直播| 亚洲综合色视频| 欧美激情一区二区三区全黄| 欧美在线一二三| 国产三区二区一区久久| 香蕉成人伊视频在线观看| 亚洲精品之草原avav久久| 欧美国产精品久久| 亚洲欧洲日产国产网站| 欧美mv日韩mv国产网站app| 欧美在线啊v一区| 国语自产精品视频在线看一大j8 | 欧美在线免费一级片| 一本色道久久综合亚洲精品婷婷 | 国产亚洲欧美色| 久久久www成人免费精品| 亚洲欧美日韩久久精品| 国产精品免费一区豆花| 午夜一区在线| 亚洲欧美日韩综合aⅴ视频| 国产精品海角社区在线观看| 亚洲欧美日本在线| 亚洲欧美日韩直播| 一区二区三区自拍| 欧美激情91| 欧美精品一区二区三区在线看午夜| 日韩视频一区二区| 夜久久久久久| 国内成人自拍视频| 亚洲国产精品一区二区久| 欧美精品二区三区四区免费看视频| 一本在线高清不卡dvd| 亚洲一二区在线| 激情久久影院| 亚洲精品欧美极品| 国产精品中文字幕在线观看| 久久综合中文字幕| 欧美精品日日鲁夜夜添| 欧美夜福利tv在线| 欧美freesex8一10精品| 亚洲午夜电影在线观看| 欧美一区二区三区在线看| 一区在线视频| 日韩午夜黄色| 黑人一区二区三区四区五区| 最新亚洲电影| 国产日韩欧美中文在线播放| 欧美黄网免费在线观看| 国产精品伦子伦免费视频| 欧美电影在线观看| 国产精品美女久久久免费| 麻豆亚洲精品| 国产精品青草久久| 亚洲精品一区二区三区蜜桃久| 国产精品亚洲综合色区韩国| 欧美成人一区二区三区| 欧美一区成人| 日韩一区二区福利| 欧美一区二区三区男人的天堂| 99国产精品久久| 欧美一区二区在线看| 一区二区欧美在线观看| 久久久伊人欧美| 欧美一区二区黄色| 欧美日韩一二三区| 亚洲高清自拍| 精品动漫3d一区二区三区免费| 一本色道久久99精品综合| 亚洲高清网站| 久久精品99| 久久精品国产亚洲高清剧情介绍| 欧美日韩一区二区在线观看| 欧美成人亚洲成人日韩成人| 国内久久视频| 性欧美大战久久久久久久久| 亚洲一区二区在线看| 欧美人在线视频| 91久久精品一区二区三区| 在线成人av网站| 欧美在线免费观看亚洲| 欧美一级午夜免费电影| 国产精品一区二区欧美| 中文日韩欧美| 亚洲愉拍自拍另类高清精品| 欧美日韩精品欧美日韩精品一| 91久久黄色| 日韩亚洲欧美一区| 欧美激情综合色| 亚洲激精日韩激精欧美精品| 亚洲国产精品久久精品怡红院| 欧美一级电影久久| 久久视频在线免费观看| 精品99一区二区| 麻豆91精品91久久久的内涵| 欧美va天堂在线| 亚洲黄色毛片| 欧美理论视频| 亚洲少妇中出一区| 欧美一区二区播放| 狠狠88综合久久久久综合网| 久久久精品性| 欧美激情视频一区二区三区不卡| 亚洲欧洲三级| 欧美日韩中文字幕在线| 亚洲性图久久| 蜜臀va亚洲va欧美va天堂| 亚洲国产一区在线观看| 欧美欧美天天天天操| 亚洲视频在线免费观看| 久久精品视频在线播放| 亚洲激情图片小说视频| 国产精品白丝av嫩草影院| 欧美一区二区三区视频在线观看| 免费成人在线观看视频| 亚洲激情精品| 国产精品乱码一区二三区小蝌蚪 | 亚洲国产精品久久久久久女王| 一本色道久久加勒比精品| 欧美亚洲成人网| 久久精品国产久精国产思思| 亚洲欧洲日本mm| 午夜精品久久久久久久99热浪潮 | 亚洲一区二区在线播放| 欧美自拍偷拍午夜视频| 在线免费观看日本一区| 欧美日韩裸体免费视频| 欧美一区二区三区四区高清 | 91久久精品美女| 国产精品成人观看视频免费| 久久婷婷麻豆| 一区二区三区精品在线| 老司机久久99久久精品播放免费| 夜夜嗨av一区二区三区网页 | 欧美视频日韩视频在线观看| 亚洲欧美在线网| 亚洲精品国产系列| 久久中文字幕导航| 午夜亚洲视频| 一区二区三区鲁丝不卡| 亚洲高清av| 国产一区深夜福利| 欧美视频一区在线观看| 美女国产一区| 欧美在线观看天堂一区二区三区| 亚洲免费av网站| 亚洲高清自拍| 欧美国产精品一区| 久久久亚洲国产美女国产盗摄| 亚洲一区二区三区在线| 亚洲精品小视频在线观看| 韩国av一区二区三区在线观看| 国产精品稀缺呦系列在线|