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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Quick notes on how to use RapidXML

轉(zhuǎn)載自:http://www.ffuts.org/blog/quick-notes-on-how-to-use-rapidxml/

There’s a C++ XML library called RapidXML which is perfect for most non-enterprise uses of XML. I wouldn’t call this a tutorial, but I hope this ends up helping someone. The documentation isn’t very explicit on how to output an XML declaration, for example.

How to create your XML from scratch and then output this XML into a string, with an XML declaration:

<?xml version="1.0" encoding="utf-8"?>
<rootnode version="1.0" type="example">
 
<childnode/>
</rootnode>
using namespace rapidxml;

xml_document
<> doc;

// xml declaration
xml_node
<>* decl = doc.allocate_node(node_declaration);
decl
->append_attribute(doc.allocate_attribute("version", "1.0"));
decl
->append_attribute(doc.allocate_attribute("encoding", "utf-8"));
doc
.append_node(decl);

// root node
xml_node
<>* root = doc.allocate_node(node_element, "rootnode");
root
->append_attribute(doc.allocate_attribute("version", "1.0"));
root
->append_attribute(doc.allocate_attribute("type", "example"));
doc
.append_node(root);

// child node
xml_node
<>* child = doc.allocate_node(node_element, "childnode");
root
->append_node(child);

std
::string xml_as_string;
// watch for name collisions here, print() is a very common function name!
print(std::back_inserter(xml_as_string), doc);
// xml_as_string now contains the XML in string form, indented
// (in all its angle bracket glory)

std
::string xml_no_indent;
// print_no_indenting is the only flag that print() knows about
print(std::back_inserter(xml_as_string), doc, print_no_indenting);
// xml_no_indent now contains non-indented XML


Parsing and traversing an XML document like this one:

<?xml version="1.0" encoding="utf-8"?>
<rootnode version="1.0" type="example">
 
<childnode entry="1">
   
<evendeepernode attr1="cat" attr2="dog"/>
   
<evendeepernode attr1="lion" attr2="wolf"/>
 
</childnode>
 
<childnode entry="2">
 
</childnode>
</rootnode>
void traverse_xml(std::string input_xml)
{
   
// (input_xml contains the above XML)

   
// make a safe-to-modify copy of input_xml
   
// (you should never modify the contents of an std::string directly)
    vector
<char> xml_copy(input_xml.begin(), input_xml.end());
    xml_copy
.push_back('\0');

   
// only use xml_copy from here on!
    xml_document
<> doc;
   
// we are choosing to parse the XML declaration
   
// parse_no_data_nodes prevents RapidXML from using the somewhat surprising
   
// behavior of having both values and data nodes, and having data nodes take
   
// precedence over values when printing
   
// >>> note that this will skip parsing of CDATA nodes <<<
    doc
.parse<parse_declaration_node | parse_no_data_nodes>(&xml_copy[0]);

   
// alternatively, use one of the two commented lines below to parse CDATA nodes,
   
// but please note the above caveat about surprising interactions between
   
// values and data nodes (also read http://www.ffuts.org/blog/a-rapidxml-gotcha/)
   
// if you use one of these two declarations try to use data nodes exclusively and
   
// avoid using value()
   
//doc.parse<parse_declaration_node>(&xml_copy[0]); // just get the XML declaration
   
//doc.parse<parse_full>(&xml_copy[0]); // parses everything (slowest)

   
// since we have parsed the XML declaration, it is the first node
   
// (otherwise the first node would be our root node)
   
string encoding = doc.first_node()->first_attribute("encoding")->value();
   
// encoding == "utf-8"

   
// we didn't keep track of our previous traversal, so let's start again
   
// we can match nodes by name, skipping the xml declaration entirely
    xml_node
<>* cur_node = doc.first_node("rootnode");
   
string rootnode_type = cur_node->first_attribute("type")->value();
   
// rootnode_type == "example"

   
// go straight to the first evendeepernode
    cur_node
= cur_node->first_node("childnode")->first_node("evendeepernode");
   
string attr2 = cur_node->first_attribute("attr2")->value();
   
// attr2 == "dog"

   
// and then to the second evendeepernode
    cur_node
= cur_node->next_sibling("evendeepernode");
    attr2
= cur_node->first_attribute("attr2")->value();
   
// now attr2 == "wolf"
}

posted on 2010-08-18 02:35 楊粼波 閱讀(1250) 評論(3)  編輯 收藏 引用

評論

# re: Quick notes on how to use RapidXML 2010-08-18 20:29 dayforever

記得修改allocstring函數(shù),將最后一個字符設(shè)置為'\0',不然死很難看
記得使用前先看看對應(yīng)flag的意思,不然死的很難看  回復(fù)  更多評論   

# re: Quick notes on how to use RapidXML 2010-08-18 20:30 dayforever

記得所有的value都必須是常量字符串或者是allocstring出來的,不然死的很難看  回復(fù)  更多評論   

# re: Quick notes on how to use RapidXML 2010-08-23 20:49 楊粼波

不明白……  回復(fù)  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产一区再线| 欧美在线免费观看视频| 午夜视频一区二区| 免费不卡在线视频| 一本久久知道综合久久| 午夜免费电影一区在线观看| 久久综合九色欧美综合狠狠| 欧美精品一区二区三| 国产精自产拍久久久久久| 亚洲黄色片网站| 亚洲欧美日本日韩| 欧美激情小视频| 亚洲一区在线视频| 欧美国产亚洲精品久久久8v| 国产精品综合久久久| 亚洲精品日产精品乱码不卡| 欧美一级淫片aaaaaaa视频| 欧美激情精品久久久久久久变态 | 国产精品家教| 1024成人网色www| 亚洲欧美一区二区激情| 欧美a级片网| 亚洲一区亚洲| 欧美久久久久久| 一区二区三区在线观看国产| 亚洲一卡久久| 欧美黑人一区二区三区| 欧美怡红院视频一区二区三区| 欧美精品久久久久久| 极品尤物一区二区三区| 亚洲欧美制服中文字幕| 亚洲国产一区二区三区在线播| 欧美一区二区三区播放老司机| 欧美日本在线| 亚洲国产精品尤物yw在线观看 | 欧美一区二区三区在线| 亚洲精品1234| 久久在线91| 韩国女主播一区| 欧美一区二区在线免费观看 | 国产精品女同互慰在线看| 日韩午夜激情av| 欧美freesex交免费视频| 亚洲一区二三| 欧美亚州一区二区三区| 99热这里只有精品8| 欧美jizzhd精品欧美巨大免费| 午夜精品免费在线| 国产精品高清免费在线观看| 99日韩精品| 亚洲福利av| 蜜桃av噜噜一区| 狠狠入ady亚洲精品| 欧美综合激情网| 亚洲一区久久| 国产精品区一区| 亚洲在线视频| 一区二区三区国产精品| 欧美日韩亚洲不卡| 亚洲视频www| 99亚洲视频| 欧美三级日本三级少妇99| 一区二区三区视频观看| 亚洲精品专区| 欧美日韩免费精品| 一本久道综合久久精品| 亚洲伦理自拍| 欧美三区在线视频| 亚洲在线免费| 亚洲伊人网站| 国产视频精品免费播放| 久久av一区二区三区漫画| 亚洲欧美一区在线| 狠狠网亚洲精品| 美女性感视频久久久| 久久福利毛片| 在线日韩中文| 亚洲国产电影| 欧美日韩国产另类不卡| 亚洲小说区图片区| 亚洲免费一在线| 国产欧美一区二区三区沐欲| 久久噜噜噜精品国产亚洲综合 | 欧美aⅴ99久久黑人专区| 老司机免费视频久久| 日韩西西人体444www| 99www免费人成精品| 国产精品久久久一区二区三区| 欧美在线观看网站| 久久久久综合网| 亚洲精品乱码久久久久久黑人| 日韩一级大片| 国产欧美韩日| 蜜乳av另类精品一区二区| 欧美wwwwww| 亚洲免费视频中文字幕| 校园春色国产精品| 亚洲电影av在线| 亚洲精品日本| 国产精品一区二区三区免费观看| 久久综合久久久| 欧美国产激情| 欧美一区午夜视频在线观看| 久久九九精品99国产精品| 亚洲精华国产欧美| 亚洲视频axxx| 伊人男人综合视频网| 日韩午夜电影av| 国产日韩欧美一区二区| 亚洲高清免费视频| 国产精品伦子伦免费视频| 免费日韩av电影| 欧美色图五月天| 久久夜色精品国产欧美乱| 欧美精品一区二区久久婷婷| 久久超碰97人人做人人爱| 免费不卡欧美自拍视频| 亚洲欧美日韩另类精品一区二区三区| 久久aⅴ国产紧身牛仔裤| a4yy欧美一区二区三区| 欧美在线视频日韩| 亚洲色图制服丝袜| 久久久久**毛片大全| 亚洲五月婷婷| 久久久久久久久久久久久久一区| 夜夜躁日日躁狠狠久久88av| 欧美一区精品| 亚洲天堂视频在线观看| 久久综合伊人77777麻豆| 亚洲欧美日韩精品久久亚洲区 | 亚洲区中文字幕| 国产亚洲综合在线| 日韩午夜激情| 亚洲黄色在线观看| 性亚洲最疯狂xxxx高清| 亚洲图片在区色| 老鸭窝91久久精品色噜噜导演| 午夜精品福利一区二区蜜股av| 欧美丰满少妇xxxbbb| 久久久久欧美| 国产精品一区二区男女羞羞无遮挡| 最近中文字幕日韩精品 | 亚洲国产成人久久综合一区| 亚洲影院免费| aaa亚洲精品一二三区| 久热精品视频| 久久精品国产欧美亚洲人人爽| 欧美日韩国产三级| 亚洲国产裸拍裸体视频在线观看乱了| 国产手机视频精品| 亚洲一区在线免费观看| 亚洲视频精选| 欧美xx69| 欧美成人免费全部观看天天性色| 国产偷国产偷精品高清尤物| 一区二区免费看| av成人免费观看| 美女精品自拍一二三四| 久久麻豆一区二区| 国产欧美三级| 亚洲一区二区av电影| 亚洲一区二区精品在线| 欧美日韩一本到| 亚洲日韩欧美视频| 亚洲人成精品久久久久| 久热综合在线亚洲精品| 免费成人黄色片| 韩国欧美一区| 欧美中文字幕视频在线观看| 欧美伊人久久| 国产精品亚洲аv天堂网| 亚洲无限av看| 亚洲欧美日韩一区二区| 国产精品国产福利国产秒拍 | 国产欧美一区二区三区另类精品 | 亚洲欧美中日韩| 国产精品久久久久婷婷| 亚洲一级在线观看| 午夜久久一区| 国产麻豆午夜三级精品| 亚洲在线网站| 久久国产精品毛片| 国产一区香蕉久久| 久久免费午夜影院| 欧美高潮视频| 最新国产成人av网站网址麻豆| 美女图片一区二区| 亚洲黄色尤物视频| 亚洲最新色图| 国产精品a级| 亚洲欧美日韩久久精品| 久久久999精品免费| 在线欧美日韩| 欧美不卡在线视频| 亚洲伦伦在线| 性高湖久久久久久久久| 好吊色欧美一区二区三区视频| 老司机67194精品线观看| 最近中文字幕mv在线一区二区三区四区 | 欧美日韩免费看|