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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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

轉載自: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函數,將最后一個字符設置為'\0',不然死很難看
記得使用前先看看對應flag的意思,不然死的很難看  回復  更多評論   

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

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

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

不明白……  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            午夜精品久久久久久久99热浪潮| 久久久另类综合| 欧美系列精品| 美女成人午夜| 狠狠色狠狠色综合人人| 久久久免费精品视频| 欧美在线视频日韩| 久久久久青草大香线综合精品| 亚洲一区精品在线| 性8sex亚洲区入口| 久久精品91| 欧美成人精品一区| 亚洲激情成人| 亚洲第一在线综合网站| 亚洲欧洲久久| 亚洲欧美激情视频在线观看一区二区三区 | 欧美性开放视频| 欧美精品大片| 国产乱码精品一区二区三区忘忧草 | 欧美性大战久久久久久久蜜臀 | 国产精品成人一区二区三区吃奶| 欧美视频在线观看| 国产午夜亚洲精品羞羞网站| 一区二区亚洲欧洲国产日韩| 日韩午夜电影在线观看| 亚洲午夜激情网站| 久久精品中文字幕免费mv| 欧美国产日韩二区| 亚洲在线播放| 狂野欧美激情性xxxx| 男女av一区三区二区色多| 亚洲图片在区色| 久久激情五月丁香伊人| 欧美精品色一区二区三区| 国产精品日韩高清| 亚洲精品美女| 久久综合色综合88| 亚洲欧美成人一区二区在线电影 | 中文网丁香综合网| 欧美在线一级视频| 亚洲人成网站在线观看播放| 午夜一级久久| 欧美午夜精品久久久久久超碰| 1024日韩| 久久亚洲一区二区三区四区| av成人免费| 欧美激情免费观看| 亚洲日本中文字幕| 欧美黄色视屏| 久热这里只精品99re8久| 国产精品色午夜在线观看| 一区二区免费在线观看| 欧美激情视频网站| 久久亚洲午夜电影| 国外成人在线| 久久久久88色偷偷免费| 亚洲视频一二| 欧美性猛交xxxx免费看久久久| 亚洲欧洲三级| 久久亚洲欧洲| 久久久国产精品一区二区三区| 国产精品夜夜嗨| 欧美在线一级视频| 欧美在线视频观看| 欧美成人69| 尤物视频一区二区| 久久综合久久综合久久| 亚洲性感美女99在线| 亚洲精品日韩综合观看成人91| 久久精品夜色噜噜亚洲a∨| 国产欧美一区二区精品性| 午夜亚洲伦理| 亚洲一区二区三区中文字幕| 国产精品成人一区| 欧美一区二区黄色| 久久久久九九九九| 亚洲欧洲综合另类| 亚洲免费黄色| 欧美色另类天堂2015| 欧美一区91| 久久久久久欧美| 亚洲人永久免费| 亚洲激情视频| 国产精品久久久久国产精品日日 | 欧美午夜不卡视频| 欧美一区二区三区四区高清| 欧美一级理论片| 亚洲国产精品一区在线观看不卡 | 欧美亚洲在线| 性久久久久久久久| 亚洲精品日韩综合观看成人91| 日韩视频在线永久播放| 国产精品久久久对白| 久久久久久久性| 欧美成人国产| 欧美一区二区免费观在线| 老司机精品导航| 亚洲丰满在线| 亚洲激情在线| 国产精品一区二区三区四区| 久久精品人人做人人综合| 欧美aⅴ一区二区三区视频| 亚洲伊人第一页| 久久综合久久综合九色| 亚洲在线免费| 模特精品在线| 久久黄色级2电影| 欧美国产精品久久| 久久久久久久一区二区| 欧美激情国产日韩| 久久久久久午夜| 欧美日韩精品一本二本三本| 久久久久久久综合| 国产精品vvv| 欧美成人精品不卡视频在线观看| 欧美日韩在线播放一区二区| 蜜臀va亚洲va欧美va天堂| 欧美日韩一区在线观看视频| 久久色中文字幕| 国产精品xxx在线观看www| 亚洲第一福利视频| 在线观看欧美日韩| 亚洲欧美日韩精品久久久久| 一本色道久久综合亚洲精品小说 | 亚洲免费av网站| 亚洲国产精品成人精品| 久久狠狠久久综合桃花| 亚洲性夜色噜噜噜7777| 欧美激情亚洲| 亚洲国产成人高清精品| 狠狠色2019综合网| 亚洲一区观看| 亚洲免费视频观看| 国产精品不卡在线| 99国内精品久久| 99精品黄色片免费大全| 在线电影欧美日韩一区二区私密| 激情自拍一区| 欧美在线观看一区二区三区| 性欧美18~19sex高清播放| 欧美日韩在线观看视频| 亚洲精品视频免费观看| 亚洲伦理精品| 欧美精品久久久久久久免费观看| 亚洲大胆av| 日韩午夜激情| 欧美日韩99| 亚洲精品久久久久久久久久久| 亚洲国产婷婷| 欧美精品在线免费| 一区二区欧美精品| 亚洲欧美日韩电影| 国产情人节一区| 久久精品夜色噜噜亚洲aⅴ| 久久精品国产一区二区电影 | 91久久久久久国产精品| 亚洲激情成人| 欧美日韩一级黄| 亚洲综合大片69999| 久久国产乱子精品免费女| 国产精品久久久久久久电影| 亚洲资源在线观看| 久久久久久9| 亚洲黄色一区二区三区| 欧美激情精品久久久久久变态| 亚洲精品影视在线观看| 在线亚洲激情| 国产一区二区精品久久91| 久久久久久久久久久一区| 亚洲国产一区二区三区a毛片| 亚洲综合国产| 一区二区三区中文在线观看| 欧美精品九九99久久| 亚洲一级二级在线| 你懂的视频欧美| 亚洲视频www| 国产午夜精品一区理论片飘花| 久久精品国产77777蜜臀| 亚洲第一精品久久忘忧草社区| 一道本一区二区| 国产一区久久| 欧美人与性动交a欧美精品| 欧美一区综合| 欧美精品成人91久久久久久久| 国产一区二区主播在线| 鲁大师影院一区二区三区| 日韩亚洲精品视频| 久久精品色图| 日韩一区二区精品葵司在线| 国产精品网红福利| 欧美亚洲网站| 欧美日韩国产123| 午夜精品一区二区三区在线视| 欧美成人国产va精品日本一级| 在线视频精品| 影音先锋一区| 国产精品视频xxx| 欧美—级a级欧美特级ar全黄| 亚洲女人天堂av| 亚洲精品视频一区|