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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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>
            欧美丰满高潮xxxx喷水动漫| 欧美一级大片在线观看| 欧美一区久久| 久久精品一二三| 久久这里只有| 亚洲精品国产欧美| 99精品欧美一区二区三区| 亚洲视屏在线播放| 欧美一区国产在线| 欧美乱人伦中文字幕在线| 欧美四级在线观看| 国模套图日韩精品一区二区| 在线免费观看日本一区| 亚洲欧美日韩精品| 蜜乳av另类精品一区二区| 99视频精品免费观看| 久久精品视频播放| 亚洲国产欧美一区二区三区同亚洲| 欧美黄色一区二区| 日韩一级裸体免费视频| 久久精品99久久香蕉国产色戒| 欧美大尺度在线| 国产三区二区一区久久| 亚洲欧洲一区二区三区| 欧美制服丝袜第一页| 亚洲欧洲三级电影| 久久综合九色综合欧美就去吻| 国产精品入口夜色视频大尺度| 亚洲人成网站在线播| 久久99在线观看| 亚洲天堂男人| 欧美连裤袜在线视频| 亚洲日韩欧美视频| 亚洲国产日韩综合一区| 毛片av中文字幕一区二区| 国产一区视频网站| 久久精品国产一区二区三区免费看| 在线观看视频免费一区二区三区| 久久精品视频一| 欧美一进一出视频| 好看的日韩视频| 欧美大片第1页| 欧美区国产区| 亚洲嫩草精品久久| 亚洲免费伊人电影在线观看av| 欧美日韩日日骚| 欧美在线综合视频| 久久免费精品视频| 99国产精品| 亚洲性视频网址| 精品av久久707| 亚洲狼人综合| 国内视频一区| 日韩视频永久免费| 国产精品尤物| 亚洲国产成人在线视频| 欧美国产日韩二区| 亚洲一区二区在线观看视频| 销魂美女一区二区三区视频在线| 精品二区久久| 中文一区在线| 亚洲人成在线播放| 蜜桃久久av一区| 久久亚洲私人国产精品va媚药| 国产午夜精品久久久久久免费视| 国产精品久久777777毛茸茸| 91久久久亚洲精品| 性色av一区二区怡红| 午夜精品久久久久久久久久久| 国产精品一区视频网站| 欧美一区二区三区男人的天堂 | 国产精品入口66mio| 欧美高清在线一区二区| 国产精品三上| 一区二区三区日韩精品| 亚洲乱码久久| 久久亚洲私人国产精品va媚药| 欧美一区二区在线| 欧美日韩成人免费| 亚洲成在人线av| 影音先锋亚洲视频| 久久久久久久久久久久久久一区 | 亚洲资源在线观看| 亚洲一区二区三区精品在线观看| 美女精品在线| 欧美大片网址| 在线欧美一区| 免费欧美日韩| 欧美不卡视频一区发布| 韩国av一区二区三区在线观看| 亚洲尤物在线视频观看| 欧美一区久久| 亚洲韩国青草视频| 韩国av一区二区三区| 亚洲一区二区精品在线| 性做久久久久久免费观看欧美| 国产日韩在线看片| 久久久免费观看视频| 欧美电影免费观看| 亚洲日本在线观看| 欧美视频一区| 久久国产高清| 麻豆精品传媒视频| 亚洲激情在线播放| 欧美日韩中字| 一本久久青青| 国产一区二区黄| 巨乳诱惑日韩免费av| 一区二区三区日韩| 久久久久欧美| 亚洲精品久久嫩草网站秘色| 欧美日韩成人在线观看| 欧美一区二视频在线免费观看| 亚洲成在线观看| 欧美制服丝袜| 在线视频一区二区| 一区二区三区亚洲| 欧美日韩精品免费观看视频| 欧美亚洲综合另类| 日韩一区二区久久| 久久天堂国产精品| 亚洲一区在线观看视频| 亚洲国产精选| 国产亚洲精品激情久久| 欧美日韩亚洲视频| 美脚丝袜一区二区三区在线观看| 欧美一区亚洲二区| 亚洲综合首页| 亚洲欧美国产另类| 亚洲一区二区三区国产| 亚洲一区二区三区三| 午夜精品久久久久久久男人的天堂| 亚洲小视频在线| 久久久久久国产精品一区| 欧美sm重口味系列视频在线观看| 免费久久99精品国产自| 欧美日韩高清区| 国产日韩1区| 91久久线看在观草草青青| 亚洲精品美女在线| 午夜在线成人av| 久久九九热免费视频| 亚洲国产婷婷| 99精品欧美一区二区三区| 99国产精品久久久久老师| 洋洋av久久久久久久一区| 洋洋av久久久久久久一区| 亚洲欧美日韩一区二区在线| 欧美中文字幕视频| 免费在线播放第一区高清av| 亚洲人成亚洲人成在线观看图片| 亚洲九九精品| 欧美一区二区高清| 欧美 日韩 国产 一区| 国产精品www994| 精品成人一区二区| 亚洲精品免费在线| 欧美一区二区精品久久911| 欧美不卡在线视频| 亚洲国产日韩综合一区| 亚洲婷婷国产精品电影人久久 | 欧美一区二区国产| 欧美www视频| 国产一区久久| 一区二区三区 在线观看视| 久久都是精品| 一本高清dvd不卡在线观看| 久久国产主播| 国产精品久久波多野结衣| 亚洲人成艺术| 狼人天天伊人久久| 一区二区免费在线观看| 亚洲私人影吧| 亚洲国产岛国毛片在线| 久久精品国产亚洲a| 国产精品日本欧美一区二区三区| 亚洲国产精品久久精品怡红院| 欧美亚洲一区在线| 在线一区二区三区做爰视频网站| 免费欧美日韩国产三级电影| 在线成人激情黄色| 免费不卡在线观看av| 午夜精品福利在线| 国产精品成人一区二区三区吃奶| 日韩视频在线一区| 欧美国产一区二区三区激情无套| 欧美亚洲自偷自偷| 激情五月综合色婷婷一区二区| 欧美在线电影| 欧美一区二区女人| 影院欧美亚洲| 欧美激情91| 欧美裸体一区二区三区| 亚洲欧美精品suv| 久久成人精品电影| 亚洲黄色影院| 亚洲午夜激情| 精品不卡一区| 一本综合久久| 国产亚洲一区精品|