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

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>
            久久精品国产成人| 欧美日韩国产黄| 国产美女一区| 亚洲欧美综合国产精品一区| 一区二区欧美日韩视频| 欧美日韩一卡二卡| 亚洲欧美日韩爽爽影院| 亚洲欧美在线一区二区| 国内精品久久久久久影视8| 久久久久国产精品www | 一本久久青青| 一本一本久久a久久精品综合妖精| 国产精品久久二区二区| 久久久国产精品一区二区三区| 久久精品国产77777蜜臀| 亚洲高清一二三区| 99re这里只有精品6| 国产亚洲精品久久久| 亚洲福利国产| 欧美精品一区二区精品网| 欧美一级专区免费大片| 久久这里只有| 欧美亚洲网站| 欧美岛国在线观看| 欧美一区二区三区久久精品| 美女视频黄免费的久久| 亚洲欧美国产毛片在线| 久久一区激情| 亚洲欧美精品在线观看| 久久人人看视频| 午夜精品美女自拍福到在线| 麻豆国产精品777777在线| 亚洲欧美久久久| 欧美韩国日本一区| 久久综合网hezyo| 欧美午夜宅男影院| 亚洲第一在线综合在线| 国产欧美精品日韩| 日韩网站在线| 亚洲国产精品成人| 欧美一级欧美一级在线播放| 正在播放日韩| 模特精品在线| 美女免费视频一区| 国产揄拍国内精品对白| 亚洲视频一区在线| 一区二区欧美在线| 欧美成人午夜| 亚洲美女诱惑| 国产亚洲精久久久久久| 亚洲国产日韩欧美| 伊人成人在线视频| 久久精品国产亚洲一区二区三区 | 日韩一区二区久久| 欧美在线你懂的| 亚洲一区二区3| 欧美极品在线观看| 亚洲高清久久| 亚洲国产一区视频| 欧美综合国产精品久久丁香| 正在播放欧美一区| 欧美精品91| 亚洲激情二区| 亚洲精品看片| 欧美不卡福利| 最新高清无码专区| 一区二区三区四区国产精品| 欧美精品videossex性护士| 亚洲国产另类 国产精品国产免费| 亚洲国产日本| 久久久www成人免费毛片麻豆| 欧美韩国日本综合| 国产一区二区三区的电影 | 日韩亚洲欧美一区| 中文久久精品| 欧美天堂在线观看| 亚洲欧美不卡| 久久久久久久综合日本| 国产一区二区三区四区在线观看| 欧美一级淫片aaaaaaa视频| 久久精品国产精品亚洲| 黄色成人片子| 欧美成人精品在线| 一本在线高清不卡dvd | 在线综合亚洲欧美在线视频| 欧美日韩国产999| 中国av一区| 久久精品一区二区三区四区| 在线成人www免费观看视频| 看欧美日韩国产| 日韩视频精品| 久久九九国产| 亚洲精品国久久99热| 欧美午夜不卡视频| 欧美资源在线| 亚洲九九九在线观看| 欧美影院成人| 亚洲高清影视| 国产精品久久77777| 久久久精彩视频| 亚洲精品在线二区| 久久人人97超碰国产公开结果| 亚洲三级影院| 国产欧美一区二区精品性色| 欧美1区视频| 午夜视频久久久久久| 亚洲人成免费| 久久久久久久久久码影片| 欧美综合国产| 母乳一区在线观看| 在线中文字幕日韩| 在线播放豆国产99亚洲| 欧美日韩亚洲综合| 老司机一区二区三区| 亚洲欧美一区二区三区久久| 亚洲成色精品| 欧美国产在线观看| 先锋资源久久| 一本色道**综合亚洲精品蜜桃冫| 久久一区二区三区四区| 亚洲尤物视频网| 亚洲片在线资源| 影音先锋另类| 国产偷自视频区视频一区二区| 欧美日韩视频| 欧美激情按摩在线| 久久综合久久综合久久| 亚洲欧美成人精品| 亚洲天堂av在线免费| 亚洲裸体视频| 亚洲黄色尤物视频| 女生裸体视频一区二区三区| 久久久久成人精品| 久久国产精品99国产精| 午夜日本精品| 欧美在线一二三四区| 亚洲一级二级| 亚洲综合99| 亚洲一区二区三区高清| 在线视频欧美日韩| 中文网丁香综合网| 亚洲午夜精品| 亚洲一区制服诱惑| 小黄鸭精品aⅴ导航网站入口| 亚洲人成小说网站色在线| 国产伦精品一区二区三区在线观看| 欧美大色视频| 欧美电影在线播放| 欧美激情视频给我| 欧美日韩国产不卡在线看| 欧美理论电影网| 欧美日韩系列| 国产精品久久久久久久久久免费 | 国产精品午夜在线观看| 国产九九精品| 国产在线拍偷自揄拍精品| 激情婷婷亚洲| 亚洲剧情一区二区| 亚洲图片欧美一区| 香蕉久久国产| 久久蜜臀精品av| 欧美激情精品久久久久久黑人| 亚洲国产精品一区制服丝袜| 99精品免费| 欧美一区二区三区啪啪| 免费观看亚洲视频大全| 欧美午夜精品久久久久久久| 国产区精品在线观看| 在线观看一区| 亚洲无玛一区| 久久久久国产精品一区二区| 欧美成人午夜激情视频| 99视频国产精品免费观看| 午夜视频一区在线观看| 免费日韩精品中文字幕视频在线| 欧美日韩精品一二三区| 国产日韩欧美一区在线| 亚洲黄一区二区| 亚洲欧美日韩一区二区在线 | 亚洲欧美另类国产| 91久久在线视频| 一区二区三区色| 欧美一区91| 欧美va亚洲va国产综合| 国产精品入口日韩视频大尺度| 精品福利免费观看| 亚洲视频香蕉人妖| 久久午夜电影| 亚洲深夜影院| 欧美激情1区2区3区| 国产在线观看一区| 亚洲欧美日韩区| 亚洲国产欧美久久| 欧美综合第一页| 国产精品久久久久久亚洲调教| 亚洲国产美女精品久久久久∴| 欧美一区二区三区四区在线| 亚洲精品美女久久久久| 久久精品电影| 国产亚洲毛片|