日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pugixml解析Word

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pugixml解析Word 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用pugixml開源庫接口并擴展,解析Word 文字和table 上下行位置關系

1.遍歷指定節點下所有節點,包括當前節點下各個層的節點,判斷某個節點的存在否
2. find_node()函數使用,predicate 參數構造傳入方法
3. 獲取當前word文檔的格式,并按照原文將文字段落和表格的上下行位置關系還原所以需要確認純文字段落的位置和table的位置

std::vector<std::string> duckx::Document::get_elements() const {std::vector<std::string> allElements;pugi::xml_object_range<pugi::xml_node_iterator> childs = document.child("w:document").child("w:body").children();struct allow_remote_predicate{bool operator()(pugi::xml_node node) const{return strcmp(node.name(), "w:t") == 0;}};for (auto& it_child : childs) {if ( strcmp(it_child.name() , "w:p") == 0 ){ // w:body/ w:p / w:r/ w:t="ass"if(it_child.find_node(allow_remote_predicate()) != nullptr ) {printf("find a *** %s \n",it_child.find_node(allow_remote_predicate()).name());allElements.push_back("w:p");continue;}}else if (strcmp(it_child.name(), "w:tbl") == 0){printf("find a w:tbl \n");allElements.push_back(it_child.name());}}printf("the total row = %d\n",(int) allElements.size());return allElements; }

總結:find_node()參數需要按照官網例子方法自己構造,注意返回值,當前節點所有子節點沒有找到這個目標就會返回一個空節點,而不是false

總結

以上是生活随笔為你收集整理的pugixml解析Word的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。