日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

libxml解析xml文件的一些总结

發(fā)布時間:2023/12/13 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libxml解析xml文件的一些总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
libxml -- 解析 XML 文檔 XML
介紹:XML 和 DOM
libxml
介紹 數(shù)據(jù)類型 — xmlChar數(shù)據(jù)結構 創(chuàng)建 XML 文檔解析 XML 文檔修改 xml 文檔
Xpath — 處理大型 XML 文檔libxml2 庫函數(shù)
要注意的函數(shù)讀取 xml 文件xml 操作基本結構及其指針類型根節(jié)點相關函數(shù) 創(chuàng)建子節(jié)點相關函數(shù)添加子節(jié)點相關函數(shù)屬性相關函數(shù)

參考

  • http://xmlsoft.org/
  • http://www.miidoo.cn/info_detail-204.html
  • http://www.blogjava.net/wxb_nudt/archive/2007/11/28/161340.html
  • http://www.ibm.com/developerworks/cn/aix/library/au-libxml2.html
  • http://www.cppblog.com/lymons/archive/2009/03/30/37553.html
  • XPath 教程
  • XML

    介紹:XML 和 DOM

    XML是eXtensible Markup Language的縮寫,它是一種可擴展性標識語言, 能夠讓你自己創(chuàng)造標識,標識你所表示的內容。DOM全稱是Document Object Model(文檔對象模型),定義了一組與平臺和語言無關的接口,以便程序和腳本能夠動態(tài)訪問和修改XML文檔內容、結構及樣式。XML創(chuàng)建了標識,而 DOM的作用就是告訴程序如何操作和顯示這些標識。

    XML將數(shù)據(jù)組織成為一棵樹,DOM通過解析XML文檔,為XML文檔在邏輯上建立一個樹模型,樹的節(jié)點是一個個的對象。這樣通過操作這棵樹和這些對象就可以完成對XML文檔的操作,為處理文檔的所有方面提供了一個完美的概念性框架。

    XML 中共有12種節(jié)點類型,其中最常見的節(jié)點類型有5種:

    元素
    元素是 XML 的基本組成單元。,描述XML的基本信息。
    屬性
    屬性節(jié)點包含關于元素節(jié)點的信息,通常包含在元素里面,描述元素的屬性。
    文本
    包含許多文本信息或者只是空白。
    文檔
    文檔節(jié)點是整個文檔中所有其它節(jié)點的父節(jié)點。
    注釋
    注釋是對相關的信息進行描述、注釋。

    libxml

    介紹

    本文所介紹的 libxml 是針對 C 語言的一套 API 接口。其他如 ruby,python 亦有對應的基于 libxml 開發(fā)的綁定庫接口。

    數(shù)據(jù)類型 — xmlChar

    在 libXml 中用 xmlChar 替代 char , XML 使用 UTF-8 編碼的一字節(jié)字符串。如果你的數(shù)據(jù)使用其它編碼,它必須被轉換到 UTF-8 才能使用libxml的函數(shù)。

    如同標準 C 中的 char 類型一樣, xmlChar 也有動態(tài)內存分配、字符串操作等相關函數(shù)。例如 xmlMalloc 是動態(tài)分配內存的函數(shù); xmlFree 是配套的釋放內存函數(shù); xmlStrcmp 是字符串比較函數(shù)等等。基本上 xmlChar 字符串相關函數(shù)都在xmlstring.h 中定義;而動態(tài)內存分配函數(shù)在 xmlmemory.h 中定義。另外要注意,因為總是要在 xmlChar* 和 char* 之間進行類型轉換,所以定義了一個宏 BAD_CAST ,其定義如下: xmlstring.h

    #define BAD_CAST (xmlChar *)

    原則上來說, unsigned char 和 char 之間進行強制類型轉換是沒有問題的。

    數(shù)據(jù)結構

    xmlDoc
    代表DOM結構中的文檔類型。包含由解析文檔建立的樹結構, xmlDocPtr 是指向這個結構的指針。
    xmlNode
    代表DOM結構中的除文檔類型類型外的其它節(jié)點類型。包含單一結點的結構, xmlNodePtr 是指向這個結構的指針,它被用于遍歷文檔樹。節(jié)點應該是xml中最重要的元素了, xmlNode 代表了xml文檔中的一個節(jié)點,實現(xiàn)為一個 struct ,內容很豐富: tree.h
    typedef struct _xmlNode xmlNode; typedef xmlNode *xmlNodePtr; struct _xmlNode {void *_private;/* application data */xmlElementType type; /* type number, must be second ! */const xmlChar *name; /* the name of the node, or the entity */struct _xmlNode *children; /* parent->childs link */struct _xmlNode *last; /* last child link */struct _xmlNode *parent;/* child->parent link */struct _xmlNode *next; /* next sibling link */struct _xmlNode *prev; /* previous sibling link */struct _xmlDoc *doc;/* the containing document *//* End of common part */xmlNs *ns; /* pointer to the associated namespace */xmlChar *content; /* the content */struct _xmlAttr *properties;/* properties list */xmlNs *nsDef; /* namespace definitions on this node */void *psvi;/* for type/PSVI informations */unsigned short line; /* line number */unsigned short extra; /* extra data for XPath/XSLT */ };

    可以看到,節(jié)點之間是以鏈表和樹兩種方式同時組織起來的,next和prev指針可以組成鏈表,而parent和children可以組織為樹。所有節(jié)點都是文檔 xmlDoc 節(jié)點的直接或間接子節(jié)點。同時還有以下重要元素:

    • 節(jié)點中的文字內容: content ;
    • 節(jié)點所屬文檔: doc ;
    • 節(jié)點名字: name ;
    • 節(jié)點的 namespace: ns ;
    • 節(jié)點屬性列表: properties ;

    xml 文檔的操作其根本原理就是在節(jié)點之間移動、查詢節(jié)點的各項信息,并進行增加、刪除、修改的操作。 xmlDocSetRootElement 函數(shù)可以將一個節(jié)點設置為某個文檔的根節(jié)點,這是將文檔與節(jié)點連接起來的重要手段,當有了根結點以后,所有子節(jié)點就可以依次連接上根節(jié)點,從而組織成為一個 xml 樹。

    創(chuàng)建 XML 文檔

    創(chuàng)建一個 XML 文檔流程如下:

  • 用 xmlNewDoc 函數(shù)創(chuàng)建一個文檔指針 doc;
  • 用 xmlNewNode 函數(shù)創(chuàng)建一個節(jié)點指針 root_node;
  • 用 xmlDocSetRootElement 將 root_node 設置為 doc 的根節(jié)點;
  • 給 root_node 添加一系列子節(jié)點,并設置字節(jié)點的內容和屬性;
  • 用 xmlSaveFile 保存 xml 到文件;
  • 用 xmlFreeDoc 函數(shù)關閉文檔指針,清除內存。
  • 示例

    下面用一個例子說明一些函數(shù)的使用,和創(chuàng)建一個 XML 文檔的大致步驟:

    #include <stdio.h> #include <stdlib.h> #include <libxml/parser.h> #include <libxml/tree.h>int main (int argc, char **argv) {xmlDocPtr pdoc = NULL;xmlNodePtr proot_node = NULL,pnode = NULL,pnode1 = NULL;// 創(chuàng)建一個新文檔并設置 root 節(jié)點 // 一個 XML 文件只有一個 root 節(jié)點 pdoc = xmlNewDoc (BAD_CAST "1.0");proot_node = xmlNewNode (NULL, BAD_CAST "根節(jié)點");xmlNewProp (proot_node, BAD_CAST "版本", BAD_CAST "1.0");xmlDocSetRootElement (pdoc, proot_node);pnode = xmlNewNode (NULL, BAD_CAST "子節(jié)點1");// 創(chuàng)建上面 pnode 的子節(jié)點 xmlNewChild (pnode, NULL, BAD_CAST "子子節(jié)點1", BAD_CAST "信息");// 添加子節(jié)點到 root 節(jié)點 xmlAddChild (proot_node, pnode);pnode1 = xmlNewNode (NULL, BAD_CAST "子子節(jié)點1");xmlAddChild (pnode, pnode1);xmlAddChild (pnode1,xmlNewText (BAD_CAST "這是更低的節(jié)點,子子子節(jié)點1"));// 還可以這樣直接創(chuàng)建一個子節(jié)點到 root 節(jié)點上 xmlNewTextChild (proot_node, NULL, BAD_CAST "子節(jié)點2", BAD_CAST "子節(jié)點2的內容");xmlNewTextChild (proot_node, NULL, BAD_CAST "子節(jié)點3", BAD_CAST "子節(jié)點3的內容");// 保存 xml 為文件,如果沒有給出文件名參數(shù),就輸出到標準輸出 xmlSaveFormatFileEnc (argc > 1 ? argv[1]:"-", pdoc, "UTF-8", 1);// 釋放資源 xmlFreeDoc (pdoc);xmlCleanupParser ();xmlMemoryDump ();return 0; }

    編譯這個例子,先看看系統(tǒng)里面的 libxml2 庫的 pkgconfig 信息:

    root@jianlee:~/lab/xml# cat /usr/lib/pkgconfig/libxml-2.0.pc prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include modules=1Name: libXML Version: 2.6.32 Description: libXML library version2. Requires: Libs: -L${libdir} -lxml2 Libs.private: -lz -lm Cflags: -I${includedir}/libxml2root@jianlee:~/lab/xml# pkg-config libxml-2.0 --cflags --libs -I/usr/include/libxml2 -lxml2

    編譯:

    root@jianlee:~/lab/xml# gcc -Wall `pkg-config libxml-2.0 --cflags --libs` create_xml.c

    如果沒有修改源程序,輸出應該是這樣:

    root@jianlee:~/lab/xml# ./a.out <?xml version="1.0" encoding="UTF-8"?> <根節(jié)點 版本="1.0"><子節(jié)點1><子子節(jié)點1>信息</子子節(jié)點1><子子節(jié)點1>這是更低的節(jié)點,子子子節(jié)點1</子子節(jié)點1></子節(jié)點1><子節(jié)點2>子節(jié)點2的內容</子節(jié)點2><子節(jié)點3>子節(jié)點3的內容</子節(jié)點3> </根節(jié)點>

    示例補充說明

    輸出的各節(jié)點不要在一行

    上面使用下面方式保存 xml 文檔,輸出的文件各子節(jié)點間自動加入回車:

    // 保存 xml 為文件,如果沒有給出文件名參數(shù),就輸出到標準輸出xmlSaveFormatFileEnc (argc > 1 ? argv[1]:"-", pdoc, "UTF-8", 1);

    如果把上面的 1 換成 0 ,輸出格式是放在一行。

    用到的函數(shù)說明

    上面涉及幾個函數(shù)和類型定義,不過意思很明了,下面解釋一個(重要的是自己動手寫程序,反復實驗,所謂熟能生巧)。

    xmlDocPtr
    指向 XML 文檔對象的指針
    xmlNodePtr
    指向 XML 文檔對象中的節(jié)點對象(根節(jié)點和子節(jié)點都是一樣的)
    xmlNewDoc
    創(chuàng)建一個 XML 文檔對象
    xmlNewNode
    創(chuàng)建一個 XML 文檔的指針對象
    xmlNewProp
    給一個節(jié)點增加屬性信息,包括在 <> 中,如:
    xmlNewProp (proot_node, BAD_CAST "版本", BAD_CAST "1.0");

    最后顯示是這個樣子:

    <根節(jié)點 版本="1.0"> xmlDocSetRootElement
    設置 XML 文檔對象的根節(jié)點,只有一個根節(jié)點
    xmlNewChild
    指定一個節(jié)點,會創(chuàng)建這個節(jié)點的子節(jié)點。這樣不需要使用 xmlNewNode 創(chuàng)建一個節(jié)點,再使用 xmlAddChild 添加到其父節(jié)點中。
    xmlAddChild
    把一個節(jié)點設置為另外一個節(jié)點的子節(jié)點。
    xmlNewText
    創(chuàng)建一個描述節(jié)點,沒有 <> 符號,需要添加到其他節(jié)點上。比如上例中的:
    xmlAddChild (pnode1,xmlNewText (BAD_CAST "這是更低的節(jié)點,子子子節(jié)點1"));

    會出現(xiàn)下面的結果:

    <子子節(jié)點1>這是更低的節(jié)點,子子子節(jié)點1</子子節(jié)點1> xmlNewTextChild
    和 xmlNewText 的區(qū)別如同 xmlNewNodeChild 和 xmlNewNode 的區(qū)別一樣!
    xmlSaveFormatFileEnc
    保存 xml 對象為文件。
    xmlFreeDoc
    釋放 xml 對象
    xmlCleanupParser
    清理
    xmlMemoryDump
    清理

    解析 XML 文檔

    解析一個xml文檔,從中取出想要的信息,例如節(jié)點中包含的文字,或者某個節(jié)點的屬性,其流程如下:

    • 用 xmlReadFile 函數(shù)讀出一個文檔指針 doc ;
    • 用 xmlDocGetRootElement 函數(shù)得到根節(jié)點 curNode ;
    • curNode->xmlChildrenNode 就是根節(jié)點的子節(jié)點集合 ;
    • 輪詢子節(jié)點集合,找到所需的節(jié)點,用 xmlNodeGetContent 取出其內容 ;
    • 用 xmlHasProp 查找含有某個屬性的節(jié)點 ;
    • 取出該節(jié)點的屬性集合,用 xmlGetProp 取出其屬性值 ;
    • 用 xmlFreeDoc 函數(shù)關閉文檔指針,并清除本文檔中所有節(jié)點動態(tài)申請的內存。

    注意: 節(jié)點列表的指針依然是 xmlNodePtr ,屬性列表的指針也是 xmlAttrPtr ,并沒有 xmlNodeList 或者 xmlAttrList 這樣的類型 。看作列表的時候使用它們的 next 和 prev 鏈表指針來進行輪詢 。只有在 Xpath 中有 xmlNodeSet 這種類型。

    示例

    #include <stdio.h> #include <stdlib.h> #include <libxml/parser.h> #include <libxml/tree.h>int main (int argc , char **argv) {xmlDocPtr pdoc = NULL;xmlNodePtr proot = NULL, curNode = NULL;char *psfilename;if (argc < 1){printf ("用法: %s xml文件名\n", argv[0]);exit (1);}psfilename = argv[1];// 打開 xml 文檔 //xmlKeepBlanksDefault(0); pdoc = xmlReadFile (psfilename, "UTF-8", XML_PARSE_RECOVER);if (pdoc == NULL){printf ("打開文件 %s 出錯!\n", psfilename);exit (1);}// 獲取 xml 文檔對象的根節(jié)對象 proot = xmlDocGetRootElement (pdoc);if (proot == NULL){printf("錯: %s 是空文檔(沒有root節(jié)點)!\n", psfilename);exit (1);}/* 我使用上面程序創(chuàng)建的 xml 文檔,它的根節(jié)點是“根節(jié)點”,這里比較是否正確。*/if (xmlStrcmp (proot->name, BAD_CAST "根節(jié)點") != 0){printf ("錯誤文檔" );exit (1);}/* 如果打開的 xml 對象有 version 屬性,那么就輸出它的值。 */if (xmlHasProp (proot, BAD_CAST "版本")){xmlChar *szAttr = xmlGetProp (proot, BAD_CAST "版本");printf ("版本: %s \n根節(jié)點:%s\n" , szAttr, proot->name);}else{printf (" xml 文檔沒有版本信息\n");}curNode = proot->xmlChildrenNode;char n=0;while (curNode != NULL){if (curNode->name != BAD_CAST "text"){printf ("子節(jié)點%d: %s\n", n++,curNode->name);}curNode = curNode->next;}/* 關閉和清理 */xmlFreeDoc (pdoc);xmlCleanupParser ();return 0; }

    編譯運行(使用上例創(chuàng)建的 my.xml 文件):

    root@jianlee:~/lab/xml# cat my.xml <?xml version="1.0" encoding="UTF-8"?> <根節(jié)點 版本="1.0"><子節(jié)點1><子子節(jié)點1>信息</子子節(jié)點1><子子節(jié)點1>這是更低的節(jié)點,子子子節(jié)點1</子子節(jié)點1></子節(jié)點1><子節(jié)點2>子節(jié)點2的內容</子節(jié)點2><子節(jié)點3>子節(jié)點3的內容</子節(jié)點3> </根節(jié)點> root@jianlee:~/lab/xml# gcc -Wall `pkg-config libxml-2.0 --cflags --libs` read_xml.c root@jianlee:~/lab/xml# ./a.out my.xml 版本: 1.0 根節(jié)點:根節(jié)點 子節(jié)點0: text 子節(jié)點1: 子節(jié)點1 子節(jié)點2: text 子節(jié)點3: 子節(jié)點2 子節(jié)點4: text 子節(jié)點5: 子節(jié)點3 子節(jié)點6: text

    為什么 my.xml 文件中顯示只有 ”子節(jié)點1“、 ”子節(jié)點2“和 “子節(jié)點3”三個子節(jié)點,而程序顯示有 7 個子節(jié)點呢?!而且 0、2、4、6 都是 text 名字?

    這是因為其他四個分別是元素前后的空白文本符號,而 XML 把它們也當做一個 Node !元素是 Node 的一種類型。XML 文檔對象模型 (DOM) 定義了幾種不同的 Nodes 類型,包括 Elements(如 files 或者 age)、Attributes(如 units)和 Text(如 root 或者 10)。元素可以具有子節(jié)點。

    在打開 xml 文檔之前加上一句(取消上面程序中的此句注釋就可以):

    xmlKeepBlanksDefault(0);

    或者使用下面參數(shù)讀取 xml 文檔:

    //讀取xml文件時忽略空格 doc = xmlReadFile(docname, NULL, XML_PARSE_NOBLANKS);

    這樣就可以按我們所想的運行了:

    root@jianlee:~/lab/xml# gcc -Wall `pkg-config libxml-2.0 --cflags --libs` read_xml.c root@jianlee:~/lab/xml# ./a.out my.xml 版本: 1.0 根節(jié)點:根節(jié)點 子節(jié)點0: 子節(jié)點1 子節(jié)點1: 子節(jié)點2 子節(jié)點2: 子節(jié)點3

    還有一點注意: my.xml 文件中的子節(jié)點名字一次是 “子節(jié)點1”、“子節(jié)點2”、 “子節(jié)點3”。程序中的 n 值確是從 0 開始計算。從 0 還是 1 是個人喜好。我有時候喜好從 0 開始,有時候喜好從 1 開始。

    xmlFreeDoc
    釋放文檔指針。特別注意,當你調用 xmlFreeDoc 時,該文檔所有包含的節(jié)點內存都被釋放,所以一般來說不需要手動調用 xmlFreeNode 或者 xmlFreeNodeList 來釋放動態(tài)分配的節(jié)點內存,除非你把該節(jié)點從文檔中移除了。一般來說,一個文檔中所有節(jié)點都應該動態(tài)分配,然后加入文檔,最后調用 xmlFreeDoc 一次釋放所有節(jié)點申請的動態(tài)內存,這也是為什么我們很少看見 xmlNodeFree 的原因。
    xmlSaveFile
    將文檔以默認方式存入一個文件。
    xmlSaveFormatFileEnc
    可將文檔以某種編碼/格式存入一個文件中,創(chuàng)建 xml 文檔是的示例中用到

    修改 xml 文檔

    首先打開一個已經(jīng)存在的xml文檔,順著根結點找到需要添加、刪除、修改的地方,調用相應的xml函數(shù)對節(jié)點進行增、刪、改操作。

    刪除節(jié)點

    刪除節(jié)點使用下面方法:

    if (!xmlStrcmp(curNode->name, BAD_CAST "newNode1")){xmlNodePtr tempNode;tempNode = curNode->next;xmlUnlinkNode(curNode);xmlFreeNode(curNode);curNode = tempNode;continue;}

    即將當前節(jié)點從文檔中斷鏈(unlink),這樣本文檔就不會再包含這個子節(jié)點。這樣做需要使用一個臨時變量來存儲斷鏈節(jié)點的后續(xù)節(jié)點,并記得要手動刪除斷鏈節(jié)點的內存。

    示例

    #include <stdio.h> #include <stdlib.h> #include <libxml/parser.h>int main(int argc, char* argv[]) {xmlDocPtr doc; //定義解析文檔指針 xmlNodePtr curNode; //定義結點指針(你需要它為了在各個結點間移動) char *szDocName;if (argc <= 1){printf("Usage: %s docname\n", argv[0]);return(0);}szDocName = argv[1];xmlKeepBlanksDefault(0);doc = xmlReadFile(szDocName,"UTF-8",XML_PARSE_RECOVER); //解析文件 if (NULL == doc){fprintf(stderr,"Document not parsed successfully. \n");return -1;}curNode = xmlDocGetRootElement(doc);/*檢查確認當前文檔中包含內容*/if (NULL == curNode){fprintf(stderr,"empty document\n");xmlFreeDoc(doc);return -1;}curNode = curNode->children;while (NULL != curNode){//刪除 "子節(jié)點1" if (!xmlStrcmp(curNode->name, BAD_CAST "子節(jié)點1")){xmlNodePtr tempNode;tempNode = curNode->next;xmlUnlinkNode(curNode);xmlFreeNode(curNode);curNode = tempNode;continue;}//修改 "子節(jié)點2" 的屬性值 if (!xmlStrcmp(curNode->name, BAD_CAST "子節(jié)點2")){xmlSetProp(curNode,BAD_CAST "屬性1", BAD_CAST "設置");}//修改 “子節(jié)點2” 的內容 if (!xmlStrcmp(curNode->name, BAD_CAST "子節(jié)點2")){xmlNodeSetContent(curNode, BAD_CAST "內容變了");}//增加一個屬性 if (!xmlStrcmp(curNode->name, BAD_CAST "子節(jié)點3")){xmlNewProp(curNode, BAD_CAST "新屬性", BAD_CAST "有");}//增加 "子節(jié)點4" if (!xmlStrcmp(curNode->name, BAD_CAST "子節(jié)點3")){xmlNewTextChild(curNode, NULL, BAD_CAST "新子子節(jié)點1", BAD_CAST "新內容");}curNode = curNode->next;}// 保存文件 xmlSaveFormatFileEnc (szDocName, doc,"UTF-8",1);xmlFreeDoc (doc);xmlCleanupParser ();xmlMemoryDump ();return 0; }

    編譯運行:

    root@jianlee:~/lab/xml# cat my.xml <?xml version="1.0" encoding="UTF-8"?> <根節(jié)點 版本="1.0"><子節(jié)點1><子子節(jié)點1>信息</子子節(jié)點1><子子節(jié)點1>這是更低的節(jié)點,子子子節(jié)點1</子子節(jié)點1></子節(jié)點1><子節(jié)點2>子節(jié)點2的內容</子節(jié)點2><子節(jié)點3>子節(jié)點3的內容</子節(jié)點3> </根節(jié)點> root@jianlee:~/lab/xml# gcc -Wall `pkg-config libxml-2.0 --cflags --libs` modify_xml.c root@jianlee:~/lab/xml# ./a.out my.xml root@jianlee:~/lab/xml# cat my.xml <?xml version="1.0" encoding="UTF-8"?> <根節(jié)點 版本="1.0"><子節(jié)點2 屬性1="設置">內容變了</子節(jié)點2><子節(jié)點3 新屬性="有">子節(jié)點3的內容<新子子節(jié)點1>新內容</新子子節(jié)點1></子節(jié)點3> </根節(jié)點> root@jianlee:~/lab/xml# ./a.out my.xml # 看看再運行一次的結果! root@jianlee:~/lab/xml# cat my.xml <?xml version="1.0" encoding="UTF-8"?> <根節(jié)點 版本="1.0"><子節(jié)點2 屬性1="設置">內容變了</子節(jié)點2><子節(jié)點3 新屬性="有" 新屬性="有">子節(jié)點3的內容<新子子節(jié)點1>新內容</新子子節(jié)點1><新子子節(jié)點1>新內容</新子子節(jié)點1></子節(jié)點3> </根節(jié)點>

    Xpath — 處理大型 XML 文檔

    libxml2 庫函數(shù)

    要注意的函數(shù)

    xmlKeepBlanksDefault

    int xmlKeepBlanksDefault (int val)

    設置是否忽略空白節(jié)點,比如空格,在分析前必須調用,默認值是0,最好設置成1.

    xmlKeepBlanksDefault(0) 除了在讀入xml文件時忽略空白之外,還會在寫出xml 文件時在每行前面放置縮進(indent)。如果使用xmlKeepBlanksDefault(1) 則你會發(fā)現(xiàn)每行前面的縮進就沒有了,但不會影響回車換行。

    xmlSaveFormatFile

    // 保存 xml 為文件,如果沒有給出文件名參數(shù),就輸出到標準輸出xmlSaveFormatFileEnc (argc > 1 ? argv[1]:"-", pdoc, "UTF-8", 1);

    xmlSaveFormatFile 的 format 參數(shù)設置成 0,保存后的 xml 文檔里是會把所有的結點都放到一行里顯示。設置為 1,就可以自動添加回車。

    讀取 xml 文件

    xmlParseFile

    xmlDocPtr xmlParseFile (const char * filename)

    以默認方式讀入一個 UTF-8 格式的 xml 文檔, 并返回一個文檔對象指針 <libxml/tree.h>

    xmlReadFile

    指定編碼讀取一個 xml 文檔,返回指針。

    xml 操作基本結構及其指針類型

    xmlDoc, xmlDocPtr

    文檔對象的結構體及其指針

    xmlNode, xmlNodePtr

    節(jié)點對象的結構體及其指針

    xmlAttr, xmlAttrPtr

    節(jié)點屬性的結構體及其指針

    xmlNs, xmlNsPtr

    節(jié)點命名空間的結構及其指針

    根節(jié)點相關函數(shù)

    xmlDocGetRootElement

    xmlNodePtr xmlDocGetRootElement (xmlDocPtr doc) 獲取文檔根節(jié)點

    xmlDocSetRootElement

    xmlNodePtr xmlDocSetRootElement (xmlDocPtr doc, xmlNodePtr root) 設置文檔根節(jié)點

    創(chuàng)建子節(jié)點相關函數(shù)

    xmlNewNode

    xmlNodePtr xmlNewNode (xmlNsPtr ns, const xmlChar * name) 創(chuàng)建新節(jié)點

    xmlNewChild

    xmlNodePtr xmlNewChild (xmlNodePtr parent, xmlNsPtr ns, const xmlChar * name, const xmlChar * content) 創(chuàng)建新的子節(jié)點

    xmlCopyNode

    xmlNodePtr xmlCopyNode (const xmlNodePtr node, int extended) 復制當前節(jié)點

    添加子節(jié)點相關函數(shù)

    xmlAddChild

    xmlNodePtr xmlAddChild (xmlNodePtr parent, xmlNodePtr cur) 給指定節(jié)點添加子節(jié)點

    xmlAddNextSibling

    xmlNodePtr xmlAddNextSibling (xmlNodePtr cur, xmlNodePtr elem) 添加后一個兄弟節(jié)點

    xmlAddPrevSibling

    xmlNodePtr xmlAddPrevSibling (xmlNodePtr cur, xmlNodePtr elem) 添加前一個兄弟節(jié)點

    xmlAddSibling

    xmlNodePtr xmlAddSibling (xmlNodePtr cur, xmlNodePtr elem) 添加兄弟節(jié)點

    屬性相關函數(shù)

    xmlNewProp

    xmlAttrPtr xmlNewProp (xmlNodePtr node, const xmlChar * name, const xmlChar * value) 創(chuàng)建新節(jié)點屬性

    xmlGetProp

    xmlChar * xmlGetProp (xmlNodePtr node, const xmlChar * name) 讀取節(jié)點屬性

    xmlSetProp

    xmlAttrPtr xmlSetProp (xmlNodePtr node, const xmlChar * name, const xmlChar * value) 設置節(jié)點屬性

    總結

    以上是生活随笔為你收集整理的libxml解析xml文件的一些总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    久久久久久久久久久久久影院 | 日韩在线视频一区二区三区 | 日韩欧美aaa | 91成人在线视频 | 五月婷婷六月综合 | 精品久久久久久亚洲综合网站 | 久久精品aaa | 国产不卡一二三区 | 亚洲黄色片一级 | 中文字幕欧美三区 | 精品国产一区二区三区久久影院 | 精品国产视频在线观看 | 天天爽天天射 | 成人网页在线免费观看 | 成人毛片一区 | 97人人爽| 九九九九热精品免费视频点播观看 | 99热这里精品 | 黄色免费高清视频 | 日韩av看片 | 亚洲国产欧美在线看片xxoo | 处女av在线 | 久久99精品国产麻豆宅宅 | 超碰国产在线播放 | 天天操天天摸天天干 | 精品国产视频在线 | 日韩中文字幕免费看 | 国产美女视频 | 亚洲伊人婷婷 | 91专区在线观看 | 免费看片网址 | 久久综合九色综合欧美狠狠 | 最新日韩在线观看视频 | 日本久久久影视 | 久久久久国产成人精品亚洲午夜 | 黄在线免费观看 | 成人国产精品免费观看 | 久久伦理电影网 | 久草久| 91视频在线看 | 97av在线视频 | 成人国产电影在线观看 | 久草在线高清视频 | 国产不卡在线看 | 精品自拍网 | 亚洲欧美综合 | 91精品导航 | 欧美日韩在线视频一区二区 | 日本黄色一级电影 | 亚洲砖区区免费 | jizz18欧美18| 亚洲精品乱码久久久久久按摩 | 国产精品美女999 | 久久精彩视频 | 一级黄色片在线播放 | 九色91在线 | 亚洲理论影院 | 久久精品国产成人精品 | 国产成人99av超碰超爽 | 精品一区二区三区电影 | 国产成人综合精品 | 国产精品久久久亚洲 | 国产主播大尺度精品福利免费 | 一区二区三区在线免费观看视频 | 亚洲国产网址 | 中文字幕最新精品 | 久青草国产在线 | 在线免费观看黄 | 国产高清视频色在线www | 国产精品av免费 | 久久亚洲免费 | 色福利网 | 免费男女羞羞的视频网站中文字幕 | 精品久久久久久综合日本 | 99视频在线免费观看 | 成 人 a v天堂| 99精品网站| 麻豆视频免费播放 | 91精品毛片 | 免费91麻豆精品国产自产在线观看 | 国产中文字幕在线播放 | 国产色在线,com | 欧美在线视频a | 国产精品伦一区二区三区视频 | 91在线在线观看 | 在线观看国产一区二区 | 成人看片 | 日韩一二三在线 | 欧美日韩视频网站 | 午夜视频在线观看一区二区 | 日韩特黄av| 国产成人在线观看免费 | a天堂一码二码专区 | 在线 视频 一区二区 | 国产黄影院色大全免费 | www.久久色 | www.91国产| 999久久 | 中文字幕色在线视频 | 91精品国自产在线观看欧美 | 国产丝袜在线 | 一区二区三区国产欧美 | 久久久久久久99精品免费观看 | 99精品在线视频观看 | 99精品国产99久久久久久97 | 亚洲精品小视频 | 精品亚洲成人 | 欧美久久九九 | 九九久久视频 | 亚洲国产伊人 | 日韩在线一二三区 | 国产福利在线不卡 | 91漂亮少妇露脸在线播放 | 国产伦精品一区二区三区在线 | 国产亚洲精品久久19p | 国产 字幕 制服 中文 在线 | 九九视频在线 | 久久狠狠婷婷 | 在线观看一区二区精品 | 91在线免费观看网站 | 国产视频在线观看免费 | 91精品国产综合久久福利 | 亚洲视频大全 | 免费观看一级成人毛片 | 国产一区二区中文字幕 | 日韩素人在线观看 | 欧美最猛性xxxxx免费 | 手机看国产毛片 | 成人午夜剧场在线观看 | 国产黄色一级片 | 狠狠色噜噜狠狠狠狠 | 久久久91精品国产一区二区三区 | 丁香婷婷深情五月亚洲 | 久久a v电影 | 免费av网址大全 | av再线观看 | 国产精品久久久久久五月尺 | 婷婷在线精品视频 | 色资源中文字幕 | 久久亚洲电影 | 久久久.com| 亚洲精品美女免费 | 中文成人字幕 | 亚洲精品网址在线观看 | 亚洲资源片 | 免费人人干 | 玖玖玖在线观看 | 久久久国产精品网站 | 久久久亚洲国产精品麻豆综合天堂 | 亚洲丝袜中文 | 久久久久免费看 | av在线a| 久久不射电影院 | 久久精品视频在线播放 | 999久久久久久 | 亚洲 欧美 国产 va在线影院 | 国产玖玖精品视频 | 国产精品欧美精品 | 色综合天天综合网国产成人网 | 黄色软件在线观看免费 | 国产在线视频一区 | 精品国产一区二区三区日日嗨 | 亚洲国产精品人久久电影 | 午夜精品导航 | 色网影音先锋 | 婷婷新五月 | 日韩三级在线观看 | 日韩在线欧美在线 | 久草视频看看 | 亚洲日本黄色 | 国语麻豆 | 亚洲人在线7777777精品 | 国产91影视 | 国产成人亚洲在线电影 | www好男人 | 欧美视屏一区二区 | 激情婷婷网 | 人人插人人做 | 99久久999久久久精玫瑰 | 久久夜色精品国产欧美乱极品 | 午夜久久久久久久久久影院 | 国产精品久久久久影视 | 91高清在线看 | 97在线观看视频 | 国产伦理久久精品久久久久_ | 中文在线免费看视频 | 91一区二区三区久久久久国产乱 | a级国产乱理伦片在线播放 久久久久国产精品一区 | av中文天堂在线 | 日本精品久久久久影院 | 国产精品综合久久久久久 | 2020天天干夜夜爽 | 欧美一区二区三区免费观看 | 亚洲国产中文字幕在线 | av一区二区三区在线播放 | 91超碰免费在线 | 不卡av在线 | 国产精品无av码在线观看 | 免费 在线 中文 日本 | 一区二区av | 高清精品视频 | 免费色视频网站 | 日本中文字幕网站 | 久久a级片 | 亚洲欧美综合精品久久成人 | 一级片视频在线 | 国产99久久久国产精品免费看 | 国产糖心vlog在线观看 | 五月婷av | 不卡视频在线看 | 日韩中文字幕免费在线观看 | 96久久精品 | 日本中文字幕在线免费观看 | 啪啪精品 | 国产一区黄色 | 日韩大片在线免费观看 | 在线免费黄色av | 五月天综合激情 | 久久精品综合网 | 日韩欧美一区视频 | 国产精品免费在线观看视频 | 天天色天天操天天爽 | 美女免费黄视频网站 | 国产精品久久久久久69 | 黄色录像av | 欧美一区影院 | 久草在线官网 | 国产精品中文字幕在线观看 | 最新黄色av网址 | 综合网天天射 | 日韩欧美高清在线 | 91成人在线视频观看 | 久久久久久免费网 | 色鬼综合网| 一级黄色片在线 | 日韩成人精品一区二区 | 日韩精品中文字幕久久臀 | 三级av片| 成人av免费在线观看 | 欧美日韩aa | 久久久久国产视频 | 色婷婷在线视频 | 午夜狠狠干 | 超碰在线公开免费 | av一区二区在线观看中文字幕 | 亚洲国产视频直播 | 91porny九色在线播放 | 中文字幕在线字幕中文 | 国产 精品 资源 | 国产欧美最新羞羞视频在线观看 | 黄p网站在线观看 | 国产成人99av超碰超爽 | 999成人网 | 国产精品久久久久久久久婷婷 | 亚洲激情网站免费观看 | 天天射天天干天天插 | 国产精品美女在线 | 亚洲精品88欧美一区二区 | 久久综合国产伦精品免费 | 久久国产一区 | 91精品啪在线观看国产线免费 | 国内视频 | 久久久精品二区 | 国产一级久久 | av在线网站免费观看 | 国产免费又粗又猛又爽 | 日韩欧美视频一区 | 91在线免费视频观看 | av网址在线播放 | 在线 国产一区 | 麻豆一区在线观看 | 狠狠色噜噜狠狠狠狠2022 | 亚洲精品动漫久久久久 | 国产理论在线 | 国产视频观看 | 又长又大又黑又粗欧美 | 999久久久精品视频 日韩高清www | 国产精品免费一区二区三区在线观看 | 日韩av看片 | 国内视频一区二区 | 日韩精品中文字幕一区二区 | 中文字幕人成一区 | 2023av| 国产精品综合在线 | 欧美成人基地 | 91九色丨porny丨丰满6 | 在线视频第一页 | 国产一区二区综合 | 国产日韩在线观看一区 | 精品自拍sae8—视频 | 狠狠搞,com | 日韩av电影国产 | 黄色小说免费在线观看 | 国产精品美女久久久久久久网站 | www在线观看视频 | 97国产一区二区 | 91精品夜夜 | 国产精品99蜜臀久久不卡二区 | 久操视频在线播放 | 狠狠色丁香婷综合久久 | 国产裸体无遮挡 | 成人超碰在线 | 中文字幕在线影院 | 国内久久久 | 日韩高清黄色 | 国产精品尤物视频 | 国产色婷婷精品综合在线手机播放 | 久久久精品高清 | 99久久久久免费精品国产 | 91香蕉视频 | 久精品视频在线观看 | 美女视频永久黄网站免费观看国产 | 国产精品欧美久久久久三级 | 中文字幕乱码亚洲精品一区 | 玖玖爱在线观看 | 丁香六月婷婷激情 | av在线免费网站 | 欧美激情精品久久 | 国产精品国产毛片 | 日韩网站一区 | 一区二区三区电影在线播 | 十八岁以下禁止观看的1000个网站 | 成在人线av | 五月综合激情网 | 亚洲欧美视频 | 黄污视频大全 | 久久久网页 | 欧美日韩xxxxx | 一区三区视频在线观看 | 亚洲精品五月 | 狠狠做深爱婷婷综合一区 | 欧美做受高潮 | 日日夜夜av | 国产69精品久久99不卡的观看体验 | 国产黄色成人 | 中文字幕丝袜制服 | 97超碰人人 | 色天天中文 | 色操插| 亚洲高清网站 | 久久久久电影网站 | 黄av免费| 成人在线观看免费视频 | 久久人人爽 | 久久久久久免费网 | 国产精品黄色影片导航在线观看 | 国产在线国偷精品产拍 | 91视频链接| 美女性爽视频国产免费app | 久久久久北条麻妃免费看 | 国产午夜激情视频 | 午夜av片| 国产 色 | 又黄又爽又刺激的视频 | 国产精品免费观看网站 | 国产精品美女www爽爽爽视频 | 午夜视频在线观看网站 | 99草视频在线观看 | 国产精品美女久久久久久久网站 | 日本精品视频一区二区 | 91成人精品观看 | 亚洲午夜电影网 | 午夜视频亚洲 | 久久黄色小说 | 国产在线999 | 亚洲另类视频在线观看 | 午夜精品av | 97超碰人人澡 | www.日本色| 麻豆传媒视频在线 | 午夜av在线| 天天做天天干 | 国产色综合天天综合网 | 精品国产99国产精品 | 夜又临在线观看 | 在线观看你懂的网址 | 66av99精品福利视频在线 | 国产精品视频免费看 | 久久人人爽视频 | 激情丁香综合 | 亚洲最快最全在线视频 | 欧美日韩91 | 亚洲精品国产麻豆 | 国产午夜精品一区二区三区 | 日本黄色免费网站 | 西西人体4444www高清视频 | 免费日韩| 亚洲精品xxx | 天天操天天操天天操天天操 | 97免费视频在线播放 | 日韩首页 | 亚洲精品97 | 久久av观看| 婷婷综合伊人 | 综合久久2023 | 九九涩涩av台湾日本热热 | 麻豆传媒电影在线观看 | 99视频精品免费观看, | 狠狠操欧美 | 国产探花视频在线播放 | 伊人导航 | www黄色av| 五月婷香| 成人av日韩| 国产欧美精品一区二区三区四区 | www.xxxx变态.com | 亚洲午夜av电影 | 亚洲国产97在线精品一区 | 97在线观看视频 | 黄色大全视频 | www.国产精品 | av在线永久免费观看 | 999视频在线播放 | 三级动态视频在线观看 | 久久久精品网站 | 久久精品亚洲精品国产欧美 | 狠狠狠色丁香综合久久天下网 | 国产精品v欧美精品v日韩 | 99在线精品视频观看 | 久久99精品一区二区三区三区 | 久久久久久久久久国产精品 | 日韩中文字幕国产精品 | 日本在线观看中文字幕无线观看 | 欧美福利网址 | 西西4444www大胆无视频 | 久久免费视频网 | 中文字幕免费播放 | 久草在线免费新视频 | 97超视频免费观看 | 欧美视频在线观看免费网址 | 91av网站在线观看 | 久久99精品波多结衣一区 | 麻豆精品视频在线观看免费 | 丰满少妇一级 | 天天天在线综合网 | 国产精品中文字幕在线播放 | 国产一区二区三区免费在线 | 97在线观看视频 | 国产性天天综合网 | 在线观影网站 | 超碰人人在 | 国产精品久久久久久久免费观看 | 久久久国产精品视频 | av福利在线看 | 蜜桃视频日韩 | 午夜视频在线观看一区 | 成人在线观看你懂的 | 91污在线 | 久久久久久久99精品免费观看 | 中文字幕一区二 | 日本久热| 国产日本三级 | 欧美一区在线观看视频 | 激情在线五月天 | 人人看人人草 | www久久久久 | 亚洲国产片| 99色免费| 国产亚洲精品久久久网站好莱 | 国产伦精品一区二区三区无广告 | 亚洲电影av在线 | 五月天高清欧美mv | 国产在线高清精品 | 国产一区欧美在线 | 成人国产精品久久久久久亚洲 | 天天综合天天做天天综合 | 日韩av片无码一区二区不卡电影 | 久久伦理影院 | 中文字幕在线精品 | 欧美精品小视频 | 国产在线国产 | 伊人狠狠色丁香婷婷综合 | a黄色大片 | 在线观看91网站 | 最近日本字幕mv免费观看在线 | 日日干夜夜操视频 | 日韩欧美高清一区二区三区 | 欧美精品久久久久久久久免 | 69av免费视频 | 国产精品 欧美 日韩 | 中文一区二区三区在线观看 | 字幕网资源站中文字幕 | 毛片网站在线观看 | 亚洲午夜久久久综合37日本 | 九色在线 | 激情综合电影网 | 亚洲不卡123 | www.狠狠色.com | 久久国产精品一区二区三区 | 欧美精品亚洲二区 | 婷婷在线色 | 国产黄视频在线观看 | 免费看污的网站 | 久久天堂影院 | 久久精品站 | 亚洲 中文 欧美 日韩vr 在线 | 日日日爽爽爽 | 婷婷免费视频 | 色姑娘综合网 | 亚洲美女免费视频 | 99久久er热在这里只有精品15 | 免费不卡中文字幕视频 | www.狠狠操| .国产精品成人自产拍在线观看6 | 精品久久一区 | 色 免费观看 | 亚洲欧洲日韩在线观看 | 中文字幕成人av | 国产视频一区二区在线观看 | 国产成人在线免费观看 | 中文字幕乱码亚洲精品一区 | 91精品蜜桃 | 日韩精品视频在线观看网址 | 97国产精品 | 亚洲黄色区 | 国产精品女同一区二区三区久久夜 | 免费在线观看av的网站 | 中文字幕在线观看三区 | 亚洲免费在线 | 国产成人综合图片 | 婷婷性综合 | 成人黄色大片网站 | 久久特级毛片 | 国产精品免费观看久久 | 国产精品手机播放 | 香蕉日日 | 日韩一区二区在线免费观看 | 欧美成年人在线观看 | 久久国内视频 | 成人免费视频免费观看 | 国产手机在线播放 | 免费在线观看污网站 | 欧美激情va永久在线播放 | 久草在线视频网站 | 日本特黄特色aaa大片免费 | 亚洲欧美一区二区三区孕妇写真 | 在线观看亚洲成人 | 香蕉国产91 | 91精品久久久久久综合乱菊 | 久久国产亚洲精品 | 国产精品久久久久国产精品日日 | 美女视频a美女大全免费下载蜜臀 | 9在线观看免费高清完整 | 成人三级网站在线观看 | 在线观看视频中文字幕 | 免费黄色看片 | 日韩欧美一区二区三区黑寡妇 | ,午夜性刺激免费看视频 | 日日天天狠狠 | 欧美日韩国产网站 | 天天射天天射 | 久久亚洲私人国产精品va | 91麻豆精品国产91久久久更新时间 | 欧美三级高清 | 国产在线观看高清视频 | 久久精品久久精品久久39 | 国际精品久久久久 | 久久久免费精品 | 手机成人在线电影 | 国产啊v在线观看 | 精品一区免费 | 久久综合天天 | 深爱激情开心 | se婷婷| 日本中文字幕一二区观 | 国产一级黄色电影 | 久久国产视屏 | 99免费看片 | 日韩av电影中文字幕 | 欧美在线日韩在线 | 日韩午夜电影院 | 成人免费视频观看 | 免费合欢视频成人app | 久久国产精品视频 | 久久久国产高清 | 91色网址| 成年人视频在线 | 在线观看精品一区 | 精品少妇一区二区三区在线 | 激情开心色 | 色中色资源站 | 一级黄色片在线 | 免费特级黄毛片 | 97超碰人人 | 亚洲欧美国产精品va在线观看 | 国产资源在线免费观看 | 欧美色精品天天在线观看视频 | 日韩精品一区在线观看 | 欧美成人性战久久 | 成人观看视频 | 亚洲理论在线观看 | 中文字幕在线观看第一区 | a视频在线观看 | 日韩有码第一页 | 成人免费观看av | 五月天久久综合网 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 欧美一级片 | 亚洲国产精品激情在线观看 | 国产精品原创在线 | 亚洲高清av | 91成人短视频在线观看 | 99热在线看| 91av视频免费观看 | 日本中文字幕在线电影 | 久草视频国产 | 99久久国产免费,99久久国产免费大片 | 欧美日韩伦理一区 | 精品视频在线视频 | 久99视频| 视频直播国产精品 | .精品久久久麻豆国产精品 亚洲va欧美 | 久久嗨 | 在线 高清 中文字幕 | 一级理论片在线观看 | 97精产国品一二三产区在线 | 日本午夜在线观看 | 精品极品在线 | 国产一区二区不卡视频 | 欧美视频18 | 九七人人干 | 在线观看黄色小视频 | 国产免费xvideos视频入口 | 国产精品色视频 | 香蕉视频免费看 | 久草视频首页 | 亚洲第一av在线播放 | 97国产情侣爱久久免费观看 | 日本久久久久久久久久久 | 一区二区三区久久 | 国产成人黄色在线 | 五月天久久久久久 | 中文字幕精品三区 | 国产精品18久久久久久首页狼 | 98涩涩国产露脸精品国产网 | 在线观看免费成人 | 麻豆一二三精选视频 | 在线黄av | 欧美三人交 | 国产99久久九九精品免费 | 夜夜爽www | 久久午夜国产精品 | 在线观看国产一区 | 97国产在线播放 | 亚洲做受高潮欧美裸体 | 91网免费看 | 蜜臀久久99静品久久久久久 | 99热99| 久久久国产精品亚洲一区 | 成人国产精品久久久久久亚洲 | 制服丝袜欧美 | 日本久久久久久科技有限公司 | 日韩欧美一区二区在线 | 九草在线观看 | 免费看黄在线观看 | 免费在线一区二区三区 | 久久久福利 | 在线观看日本高清mv视频 | 天天av天天 | 国产美女精品视频 | 婷婷视频在线观看 | 日韩免费一区二区在线观看 | 久久久久久国产精品美女 | 狠狠五月婷婷 | 亚洲国产成人久久综合 | 久久精品影视 | 麻豆成人在线观看 | 少妇视频在线播放 | 啪啪免费观看网站 | 国产精品在线看 | 天天艹天天 | 国产成视频在线观看 | 久久你懂得 | 夜添久久精品亚洲国产精品 | 国产精品久久久久久久久久免费 | 中文字幕久久精品 | 麻豆91在线播放 | ww视频在线观看 | 久草在线网址 | 激情文学丁香 | 精精国产xxxx视频在线播放 | 国产最新在线视频 | 国产成人亚洲在线观看 | 国产精品日韩久久久久 | 97视频在线观看免费 | 久久精品99国产精品亚洲最刺激 | 九九热免费精品视频 | 99综合影院在线 | 超碰在线人人爱 | 日本韩国精品一区二区在线观看 | 婷婷四房综合激情五月 | 免费视频 三区 | 日韩色视频在线观看 | 久久免费视频6 | 精品免费观看 | 欧美a级在线免费观看 | 一区二区三区在线看 | 欧美最爽乱淫视频播放 | 久久久蜜桃一区二区 | 97超碰站| 亚洲精品乱码 | www.久久色| 在线观看av大片 | 亚洲成人二区 | 免费看av在线 | 狠狠色丁香久久综合网 | 99九九99九九九视频精品 | 亚洲国产婷婷 | 美女免费视频一区 | 国内视频1区 | 欧美日韩性视频在线 | 日韩视频在线不卡 | 我要看黄色一级片 | 色综合天天干 | 亚洲干| 久久久亚洲麻豆日韩精品一区三区 | 精品a视频| 五月婷婷综合网 | 国产精品成人av电影 | 天天伊人网 | 日韩h在线观看 | 激情小说网站亚洲综合网 | 午夜精品在线看 | 亚洲黄色一级大片 | 蜜桃av人人夜夜澡人人爽 | 精品在线你懂的 | 男女免费av | 黄a网| 国产精品成人一区二区三区吃奶 | 国产精品电影在线 | 久久草网站 | 国产精品视频免费看 | www.夜色321.com | 国产在线日本 | 色婷婷99 | 国产色道 | 日韩免费观看av | 婷婷六月天丁香 | 久久综合狠狠综合 | 日韩在线免费不卡 | 久久精品久久久久久久 | 亚洲欧洲在线视频 | 久久综合一本 | 在线亚洲欧美日韩 | 国产一区精品在线 | 成人精品国产免费网站 | 亚洲国产精彩中文乱码av | 国产精品h在线观看 | 18久久久久久| 干天天 | 天天天天爱天天躁 | 欧美一级大片在线观看 | 久久久999免费视频 日韩网站在线 | 视频一区久久 | 免费69视频 | 久久久伊人网 | 国产精品第10页 | 日韩在线观看一区二区三区 | 久久成人高清 | 天堂在线一区二区 | 久久久久免费 | 97精品国产aⅴ | 日韩在线中文字幕 | 国产一区精品在线观看 | 探花视频在线观看免费 | 狠狠操狠狠干2017 | 久久少妇 | 成人黄色电影在线 | 久久久受www免费人成 | 国产91粉嫩白浆在线观看 | 色网站免费在线看 | 成人在线观看资源 | 国产精品国产三级国产aⅴ入口 | 91成人午夜 | 在线精品观看国产 | 国产小视频你懂的在线 | 天天躁天天操 | 日韩高清片 | 国产又黄又爽又猛视频日本 | 99精品国自产在线 | 精精国产xxxx视频在线播放 | 成人wwwxxx视频 | 日本黄网站 | 在线免费黄| 成年人在线免费视频观看 | 国产一区福利 | 成人免费在线看片 | 国产在线小视频 | 最近中文字幕mv | 91丨九色丨国产在线观看 | 黄在线免费观看 | 黄色的网站在线 | 国产成人三级在线 | 亚洲午夜不卡 | 欧美视频日韩视频 | 国产精品久久中文字幕 | 五月婷婷综合在线视频 | 99精品欧美一区二区三区黑人哦 | 日韩网站视频 | 国产成人三级一区二区在线观看一 | 国产免费久久久久 | 婷婷五月情 | av天天干 | 伊人五月天婷婷 | 欧美美女视频在线观看 | 国产午夜视频在线观看 | 国产精品精品 | 国产麻豆精品久久一二三 | 玖玖在线观看视频 | 激情五月婷婷丁香 | 久草在线看片 | 国产女做a爱免费视频 | 欧美精品一区二区三区一线天视频 | 精品福利网 | 久久精品亚洲一区二区三区观看模式 | 婷婷色六月天 | www日日 | 摸bbb搡bbb搡bbbb | 成人网页在线免费观看 | 奇米影视777四色米奇影院 | 一区二区三区在线免费观看视频 | 蜜臀aⅴ国产精品久久久国产 | 国产生活一级片 | 国产高清精| av成人免费在线看 | 国产精品自产拍 | 青草视频网 | 久艹在线免费观看 | 久久在视频 | 亚洲日本在线视频观看 | 九色琪琪久久综合网天天 | av黄色免费在线观看 | 免费婷婷| 久草视频国产 | 中文字幕 欧美性 | 黄色免费电影网站 | 91精品啪啪| 草久视频在线 | 日韩精品高清视频 | 国产精品热视频 | 亚洲精品小视频 | 国产精品成人免费一区久久羞羞 | 国产韩国精品一区二区三区 | 日韩理论电影在线观看 | av一级在线观看 | 二区三区中文字幕 | 久久久久久综合 | 日韩专区在线播放 | 处女av在线 | 夜夜骑天天操 | 国产日韩高清在线 | 久久精品视频中文字幕 | 在线观看中文 | 最新国产视频 | 51久久夜色精品国产麻豆 | 国产精品欧美久久久久三级 | 能在线观看的日韩av | 成人午夜电影久久影院 | 欧美伦理电影一区二区 | 亚洲精品看片 | 免费成人av | 成人av免费看 | 日韩av美女 | 激情视频一区二区三区 | 久久国产免费视频 | 99久久国产免费,99久久国产免费大片 | 久久久久伊人 | 亚洲精品在线免费 | 最新中文字幕在线资源 | 96精品视频| 免费高清男女打扑克视频 | 成人在线视频观看 | 最新av免费在线观看 | 99精品久久久久 | 中文资源在线观看 | 极品美女被弄高潮视频网站 | 97超碰香蕉| 亚洲精品成人在线 | 日韩精品视频第一页 | av片在线观看 | 欧美了一区在线观看 | 久久激情影院 | 天天操人| 在线看欧美 | 操操操com | 夜夜骑日日 | 91看片淫黄大片91 | 国产精品久久一区二区三区不卡 | 天干啦夜天干天干在线线 | 欧美激情视频一二三区 | 亚洲成av | 九九在线视频免费观看 | 日韩成人免费观看 | 中文字幕不卡在线88 | 日本性xxxxx 亚洲精品午夜久久久 | 亚洲精品视频在线 | 天天综合视频在线观看 | 欧美日比视频 | 中文字幕免费高清在线观看 | 精品美女国产在线 | 成人羞羞视频在线观看免费 | 在线观看一区视频 | 日韩三级久久 | 又湿又紧又大又爽a视频国产 | 中文字幕色在线视频 | 久久综合影院 | 中文字幕高清 | 成人性生交大片免费观看网站 | 国产亚洲精品久久久网站好莱 | 日日激情 | 久久看看| 碰超在线| 国产在线一区二区 | 在线国产高清 | 射射射av | 99热在线国产精品 | 亚洲精品国偷自产在线99热 | a级国产片 | 久久久精品国产免费观看同学 | 欧美精品一区二区三区一线天视频 | 色999精品| 国产中文在线视频 | 天天激情天天干 | 欧美不卡视频在线 | 日韩精品在线视频免费观看 | 成人一区二区在线观看 | 色婷婷综合久色 | 亚洲精品在线免费观看视频 | 亚洲精品在线一区二区 | 亚洲国产精品推荐 | 在线 视频 一区二区 | 久久久精品国产免费观看同学 | 手机在线小视频 | 美女久久 | 在线免费黄色 | 中国一级片在线观看 | 青青河边草免费观看完整版高清 | 色综合天天天天做夜夜夜夜做 | 98超碰在线观看 | 国产午夜精品免费一区二区三区视频 | 狠狠狠狠狠狠天天爱 | 精品国产一区二区三区久久久蜜月 | 91视频中文字幕 | 中日韩免费视频 | 91伊人影院| 天天天综合网 | 99视频精品 | 免费三级网 | 成片免费观看视频999 | 最近日本韩国中文字幕 | 中文字幕资源网 国产 | 人人干干人人 | 一二三区av | 天天做天天爱天天综合网 | 奇米影视8888在线观看大全免费 | 青青河边草免费观看 | 精品爱爱 | 在线中文字幕观看 | 日韩在线观看不卡 | 日韩在线观看视频网站 | 免费日韩 精品中文字幕视频在线 | 亚洲精品自拍视频在线观看 | 黄免费在线观看 | 99精品国产一区二区三区麻豆 | 一区二区三区在线免费 | 天天av综合网 | 韩国一区二区三区在线观看 | 91精品视频一区 | 91在线视频免费91 | 久久手机在线视频 | 五月天婷婷在线视频 | 五月天色综合 | 91九色视频国产 | 97精产国品一二三产区在线 | 国产成人精品日本亚洲999 | www.久久视频 | 精品国产一区二区三区久久久久久 | 99久久精品国产欧美主题曲 | 免费亚洲片 | www色com | 久久亚洲综合国产精品99麻豆的功能介绍 | 日韩一区在线免费观看 | 96av在线| 在线观看av国产 | 99国产视频在线 | 97精品国产91久久久久久 | 久久国际影院 | 国产日产av | 日本一区二区三区免费观看 | 99爱视频在线观看 | 国产精品99久久久久久有的能看 | 亚洲手机av | 综合色狠狠 | 婷婷www| 日韩黄色软件 | 天天夜夜操 | 亚洲尺码电影av久久 | 中文字幕综合在线 |