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

兔子的技術博客

兔子

   :: 首頁 :: 聯系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新評論

閱讀排行榜

評論排行榜

轉自:http://blog.chinaunix.net/u3/102400/showart_2031561.html
其他資料:http://www.hansencode.cn/2007/06/tinyxml-chinese-tutorial.html

TinyXML是一個簡單小巧,可以很容易集成到其它程序中的C++ XML解析器。

它能做些什么

簡單地說,TinyXML解析一個XML文檔并由此生成一個可讀可修改可保存的文檔對象模型(DOM)。

XML的意思是“可擴展標記語言“(eXtensible Markup Language)。它允許你創建你自己的文檔標記。在為瀏覽器標記文檔方面HTML做得很好,然而XML允許你定義任何文檔標記,比如可以為一個組織者應用程序定義一個描述“to do”列表的文檔。 XML擁有一個結構化并且方便的格式,所有為存儲應用程序數據而創建的隨機文件格式都可以用XML代替,而這一切只需要一個解析器。

最全面正確的說明可以在http://www.w3.org/TR/2004/REC-xml-20040204/找到,但坦白地說,它很晦澀難懂。事實上我喜歡http://skew.org/xml/tutorial上關于XML的介紹。

有不同的方法可以訪問和與XML數據進行交互。TinyXML使用文檔對象模型(DOM),這意味著XML數據被解析成一個可被瀏覽和操作的C++ 對象,然后它可以被寫到磁盤或者另一個輸出流中。你也可以把C++對象構造成一個XML文檔然后把它寫到磁盤或者另一個輸出流中。

TinyXML被設計得容易快速上手。它只有兩個頭文件和四個cpp文件。只需要把它們簡單地加到你的項目中就行了。有一個例子文件——xmltest.cpp來引導你該怎么做。

TinyXML以Zlib許可來發布,所以你可以在開源或者商業軟件中使用它。許可證更具體的描述在每個源代碼文件的頂部可以找到。

TinyXML在保證正確和恰當的XML輸出的基礎上嘗試成為一個靈活的解析器。TinyXML可以在任何合理的C++適用系統上編譯。它不依賴于異?;蛘哌\行時類型信息,有沒有STL支持都可以編譯。TinyXML完全支持UTF-8編碼和前64k個字符實體(<i>譯注:如果你不明白這句譯文,可能你需要了解一下Unicode編碼</i>)。

它無法做些什么

TinyXML不解析不使用DTDs(文檔類型定義)或者XSLs(可擴展樣式表語言)。有其它解析器(到www.sourceforge.org 搜索一下XML)具有更加全面的特性,但它們也就更大,需要花更長的時間來建立你的項目,有更陡的學習曲線,而且經常有一個更嚴格的許可協議。如果你是用于瀏覽器或者有更復雜的XML需要,那么TinyXML不適合你。

下面的DTD語法在TinyXML里是不做解析的:

<!DOCTYPE Archiv [
<!ELEMENT Comment (#PCDATA)>
]>

因為TinyXML把它看成是一個帶著非法嵌入!ELEMENT結點的!DOCTYPE結點?;蛟S這在將來會得到支持。

指南

有耐性些,這是一份能很好地指導你怎么開始的指南,它(非常短小精悍)值得你花時間完整地讀上一遍。

代碼狀況

TinyXML是成熟且經過測試的代碼,非常健壯。如果你發現了漏洞,請提交漏洞報告到sourcefore網站上 (www.sourceforge.net/projects/tinyxml)。 我們會盡快修正。

有些地方可以讓你得到提高,如果你對TinyXML的工作感興趣的話可以上sourceforge查找一下。

相關項目

你也許會覺得TinyXML很有用!(簡介由項目提供)

特性

使用STL

TinyXML可以被編譯成使用或不使用STL。如果使用STL,TinyXML會使用std::string類,而且完全支持 std::istream,std::ostream,operator<<和operator>>。許多API方法都有 ‘const char*’和’const std::string&’兩個版本。

如果被編譯成不使用STL,則任何STL都不會被包含。所有string類都由TinyXML它自己實現。所有API方法都只提供’const char*’傳入參數。

使用運行時定義:

TIXML_USE_STL

來編譯成不同的版本。這可以作為參數傳給編譯器或者在“tinyxml.h”文件的第一行進行設置。

注意:如果在Linux上編譯測試代碼,設置環境變量TINYXML_USE_STL=YES/NO可以控制STL的編譯。而在Windows上,項目文件提供了STL和非STL兩種目標文件。在你的項目中,在tinyxml.h的第一行添加"#define TIXML_USE_STL"應該是最簡單的。

UTF-8

TinyXML支持UTF-8,所以可以處理任何語言的XML文件,而且TinyXML也支持“legacy模式”——一種在支持UTF-8之前使用的編碼方式,可能最好的解釋是“擴展的ascii”。

正常情況下,TinyXML會檢測出正確的編碼并使用它,然而,通過設置頭文件中的TIXML_DEFAULT_ENCODING值,TinyXML可以被強制成總是使用某一種編碼。

除非以下情況發生,否則TinyXML會默認使用Legacy模式:

  1. 如果文件或者數據流以非標準但普遍的"UTF-8引導字節" (0xef 0xbb 0xbf)開始,TinyXML會以UTF-8的方式來讀取它。
  2. 如果包含有encoding="UTF-8"的聲明被讀取,那么TinyXML會以UTF-8的方式來讀取它。
  3. 如果讀取到沒有指定編碼方式的聲明,那么TinyXML會以UTF-8的方式來讀取它。
  4. 如果包含有encoding=“其它編碼”的聲明被讀取,那么TinyXML會以Legacy模式來讀取它。在Legacy模式下,TinyXML會像以前那樣工作,雖然已經不是很清楚這種模式是如何工作的了,但舊的內容還得保持能夠運行。
  5. 除了上面提到的情況,TinyXML會默認運行在Legacy模式下。

如果編碼設置錯誤或者檢測到錯誤會發生什么事呢?TinyXML會嘗試跳過這些看似不正確的編碼,你可能會得到一些奇怪的結果或者亂碼,你可以強制TinyXML使用正確的編碼模式。

通過使用LoadFile( TIXML_ENCODING_LEGACY )或者LoadFile( filename, TIXML_ENCODING_LEGACY ),你可以強制TinyXML使用Legacy模式。你也可以通過設置TIXML_DEFAULT_ENCODING = TIXML_ENCODING_LEGACY來強制一直使用Legacy模式。同樣的,你也可以通過相同的方法來強制設置成 TIXML_ENCODING_UTF8。

對于使用英文XML的英語用戶來說,UTF-8跟low-ASCII是一樣的。你不需要知道UTF-8或者一點也不需要修改你的代碼。你可以把UTF-8當作是ASCII的超集。

UTF-8并不是一種雙字節格式,但它是一種標準的Unicode編碼!TinyXML當前不使用或者直接支持wchar,TCHAR,或者微軟的 _UNICODE。"Unicode"這個術語被普遍地認為指的是UTF-16(一種unicode的寬字節編碼)是不適當的,這是混淆的來源。

對于“high-ascii”語言來說——幾乎所有非英語語言,只要XML被編碼成UTF-8, TinyXML就能夠處理。說起來可能有點微妙,比較舊的程序和操作系統趨向于使用“默認”或者“傳統”的編碼方式。許多應用程序(和幾乎所有現在的應用程序)都能夠輸出UTF-8,但是那些比較舊或者難處理的(或者干脆不能使用的)系統還是只能以默認編碼來輸出文本。

比如說,日本的系統傳統上使用SHIFT-JIS編碼,這種情況下TinyXML就無法讀取了。但是一個好的文本編輯器可以導入SHIFT-JIS的文本然后保存成UTF-8編碼格式的。

Skew.org link上關于轉換編碼的話題做得很好。

測試文件“utf8test.xml”包含了英文、西班牙文、俄文和簡體中文(希望它們都能夠被正確地轉化)。“utf8test.gif”文件是從IE上截取的XML文件快照。請注意如果你的系統上沒有正確的字體(簡體中文或者俄文),那么即使你正確地解析了也看不到與GIF文件上一樣的輸出。同時要注意在一個西方編碼的控制臺上(至少我的Windows機器是這樣),Print()或者printf()也無法正確地顯示這個文件,這不關 TinyXML的事——這只是操作系統的問題。TinyXML沒有丟掉或者損壞數據,只是控制臺無法顯示UTF-8而已。

實體

TinyXML認得預定義的特殊“字符實體”,即:

&amp; &
&lt; <
&gt; >
&quot; "
&apos; ‘

這些在XML文檔讀取時都會被辨認出來,并會被轉化成等價的UTF-8字符。比如下面的XML文本:

Far &amp; Away

從TiXmlText 對象查詢出來時會變成"Far & Away"這樣的值,而寫回XML流/文件時會以“&amp;”的方式寫回。老版本的TinyXML“保留”了字符實體,而在新版本中它們會被轉化成字符串。

另外,所有字符都可以用它的Unicode編碼數字來指定, " "和" "都表示不可分的空格字符。

打印

TinyXML有幾種不同的方式來打印輸出,當然它們各有各的優缺點。

  • Print( FILE* ):輸出到一個標準C流中,包括所有的C文件和標準輸出。
    • "相當漂亮的打印", 但你沒法控制打印選項。
    • 輸出數據直接寫到FILE對象中,所以TinyXML代碼沒有內存負擔。
    • 被Print()和SaveFile()調用。
  • operator<<:輸出到一個c++流中。
    • 與C++ iostreams集成在一起。
    • 在"network printing"模式下輸出沒有換行符,這對于網絡傳輸和C++對象之間的XML交換有好處,但人很難閱讀。
  • TiXmlPrinter:輸出到一個std::string或者內存緩沖區中。
    • API還不是很簡練。
    • 將來會增加打印選項。
    • 在將來的版本中可能有些細微的變化,因為它會被改進和擴展。

設置了TIXML_USE_STL,TinyXML就能支持C++流(operator <<,>>)和C(FILE*)流。但它們之間有些差異你需要知道:

C風格輸出:

  • 基于FILE*
  • 用Print()和SaveFile()方法

生成具有很多空格的格式化過的輸出,這是為了盡可能讓人看得明白。它們非??欤夷軌蛉萑蘕ML文檔中的格式錯誤。例如一個XML文檔包含兩個根元素和兩個聲明仍然能被打印出來。

C風格輸入:

  • 基于FILE*
  • 用Parse()和LoadFile()方法

速度快,容錯性好。當你不需要C++流時就可以使用它。

C++風格輸出:

  • 基于std::ostream
  • operator<<

生成壓縮過的輸出,目的是為了便于網絡傳輸而不是為了可讀性。它可能有些慢(可能不會),這主要跟你系統上ostream類的實現有關。無法容忍格式錯誤的XML:此文檔只能包含一個根元素。另外根級別的元素無法以流形式輸出。

C++風格輸入:

  • 基于std::istream
  • operator>>

從流中讀取XML使其可用于網絡傳輸。通過些小技巧,它知道當XML文檔讀取完畢時,流后面的就一定是其它數據了。TinyXML總假定當它讀取到根結點后XML數據就結束了。換句話說,那些具有不止一個根元素的文檔是無法被正確讀取的。另外還要注意由于STL的實現和TinyXML的限制,operator>>會比Parse慢一些。

空格

對是保留還是壓縮空格這一問題人們還沒達成共識。舉個例子,假設‘_’代表一個空格,對于"Hello____world",HTML和某些XML 解析器會解釋成"Hello_world",它們壓縮掉了一些空格。而有些XML解析器卻不會這樣,它們會保留空格,于是就是 “Hello____world”(記住_表示一個空格)。其它的還建議__Hello___world__應該變成Hello___world 。

這是一個解決得不能讓我滿意的問題。TinyXML一開始就兩種方式都支持。調用TiXmlBase::SetCondenseWhiteSpace( bool )來設置你想要的結果,默認是壓縮掉多余的空格。

如果想要改變默認行為,你應該在解析任何XML數據之前調用TiXmlBase::SetCondenseWhiteSpace( bool ) ,而且我不建議設置之后再去改動它。

句柄

想要健壯地讀取一個XML文檔,檢查方法調用后的返回值是否為null是很重要的。一種安全的檢錯實現可能會產生像這樣的代碼:

TiXmlElement* root = document.FirstChildElement( "Document" );
if ( root )
{
    TiXmlElement* element = root->FirstChildElement( "Element" );
    if ( element )
    {
        TiXmlElement* child = element->FirstChildElement( "Child" );
        if ( child )
        {
            TiXmlElement* child2 = child->NextSiblingElement( "Child" );
            if ( child2 )
            {
                // Finally do something useful.

用句柄的話就不會這么冗長了,使用TiXmlHandle類,前面的代碼就會變成這樣:

TiXmlHandle docHandle( &document );
TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement();
if ( child2 )
{
    // do something useful

這處理起來容易多了。 查閱TiXmlHandle可以得到更多的信息。

行列追蹤

對于某些應用程序來說,能夠追蹤節點和屬性在它們源文件中的原始位置是很重要的。另外,知道解析錯誤在源文件中的發生位置可以節省大量時間。

TinyXML能夠追蹤所有結點和屬性在文本文件中的行列原始位置。TiXmlBase::Row() 和 TiXmlBase::Column() 方法返回結點在源文件中的原始位置。正確的制表符號可以經由TiXmlDocument::SetTabSize() 來配置。

使用與安裝

編譯與運行xmltest:

提供了一個Linux Makefile和一個Windows Visual C++ .dsw 文件。只需要簡單地編譯和運行,它就會在你的磁盤上生成demotest.xml文件并在屏幕上輸出。它還嘗試用不同的方法遍歷DOM并打印出結點數。

那個Linux makefile很通用,可以運行在很多系統上——它目前已經在mingw和MacOSX上測試過。你不需要運行 ‘make depend’,因為那些依賴關系已經硬編碼在文件里了。

用于VC6的Windows項目文件

  • tinyxml: tinyxml 庫,非STL
  • tinyxmlSTL: tinyxml 庫,STL
  • tinyXmlTest: 用于測試的應用程序,非STL
  • tinyXmlTestSTL: 用于測試的應用程序,STL

Makefile

在makefile的頂部你可以設置:

PROFILE,DEBUG,和TINYXML_USE_STL。makefile里有具體描述。

在tinyxml目錄輸入“make clean”然后“make”,就可以生成可執行的“xmltest”文件。

在某一應用程序中使用:

把tinyxml.cpp,tinyxml.h, tinyxmlerror.cpp, tinyxmlparser.cpp, tinystr.cpp, 和 tinystr.h 添加到你的項目和makefile中。就這么簡單,它可以在任何合理的C++適用系統上編譯。不需要為TinyXML打開異常或者運行時類型信息支持。

TinyXML怎么工作

舉個例子可能是最好的辦法,理解一下:

<?xml version="1.0" standalone=no>
<!– Our to do list data –>
<ToDo>
<Item priority="1"> Go to the <bold>Toy store!</bold></Item>
<Item priority="2"> Do bills</Item>
</ToDo>

它稱不上是一個To Do列表,但它已經足夠了。像下面這樣讀取并解析這個文件(叫“demo.xml”)你就能創建一個文檔:

TiXmlDocument doc( "demo.xml" );
doc.LoadFile();

現在它準備好了,讓我們看看其中的某些行和它們怎么與DOM聯系起來。

<?xml version="1.0" standalone=no>

第一行是一個聲明,它會轉化成TiXmlDeclaration 類,同時也是文檔結點的第一個子結點。

這是TinyXML唯一能夠解析的指令/特殊標簽。一般來說指令標簽會保存在TiXmlUnknown 以保證在它保存回磁盤時不會丟失這些命令。

<!– Our to do list data –>

這是一個注釋,會成為一個TiXmlComment對象。

<ToDo>

"ToDo"標簽定義了一個TiXmlElement 對象。它沒有任何屬性,但包含另外的兩個元素。

<Item priority="1">

生成另一個TiXmlElement對象,它是“ToDo”元素的子結點。此元素有一個名為“priority”和值為“1”的屬性。

Go to the

TiXmlText ,這是一個葉子結點,它不能再包含其它結點,是"Item" TiXmlElement的子結點。

<bold>

另一個TiXmlElement, 這也是“Item”元素的子結點。

等等

最后,看看整個對象樹:

TiXmlDocument "demo.xml"
TiXmlDeclaration "version=’1.0′" "standalone=no"
TiXmlComment " Our to do list data"
TiXmlElement "ToDo"
TiXmlElement "Item" Attribtutes: priority = 1
TiXmlText "Go to the "
TiXmlElement "bold"
TiXmlText "Toy store!"
TiXmlElement "Item" Attributes: priority=2
TiXmlText "Do bills"

文檔

本文檔由Doxygen使用‘dox’配置文件生成。

許可證

TinyXML基于zlib許可證來發布:

本軟件按“現狀”提供(即現在你看到的樣子),不做任何明確或隱晦的保證。由使用此軟件所引起的任何損失都決不可能由作者承擔。

只要遵循下面的限制,就允許任何人把這軟件用于任何目的,包括商業軟件,也允許修改它并自由地重新發布:

1. 決不能虛報軟件的來源;你決不能聲稱是你是軟件的第一作者。如果你在某個產品中使用了這個軟件,那么在產品文檔中加入一個致謝辭我們會很感激,但這并非必要。

2. 修改了源版本就應該清楚地標記出來,決不能虛報說這是原始軟件。

3. 本通告不能從源發布版本中移除或做修改。

參考書目

萬維網聯盟是定制XML的權威標準機構,它的網頁上有大量的信息。

權威指南:http://www.w3.org/TR/2004/REC-xml-20040204/

我還要推薦由OReilly出版由Robert Eckstein撰寫的"XML Pocket Reference"……這本書囊括了入門所需要的一切。

捐助者,聯系人,還有簡史

非常感謝給我們建議,漏洞報告,意見和鼓勵的所有人。它們很有用,并且使得這個項目變得有趣。特別感謝那些捐助者,是他們讓這個網站頁面生機勃勃。

有很多人發來漏洞報告和意見,與其在這里一一列出來不如我們試著把它們寫到“changes.txt”文件中加以贊揚。

TinyXML的原作者是Lee Thomason(文檔中還經常出現“我”這個詞) 。在Yves Berquin,Andrew Ellerton,和tinyXml社區的幫助下,Lee查閱修改和發布新版本。

我們會很感激你的建議,還有我們想知道你是否在使用TinyXML。希望你喜歡它并覺得它很有用。請郵寄問題,評論,漏洞報告給我們,或者你也可登錄網站與我們取得聯系:

www.sourceforge.net/projects/tinyxml

Lee Thomason, Yves Berquin, Andrew Ellerton

posted on 2009-11-13 15:12 會飛的兔子 閱讀(1472) 評論(0)  編輯 收藏 引用 所屬分類: C++庫,組件
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久精品女同性| 久久一二三四| 久久在线观看视频| 永久免费精品影视网站| 日韩一二三区视频| 久久―日本道色综合久久| 亚洲人成在线观看网站高清| 亚洲男人第一av网站| 亚洲精品一区二区三区婷婷月 | 国产欧美日韩一区二区三区在线观看 | 欧美精品v国产精品v日韩精品| 久久亚洲精品一区| 国产亚洲成人一区| 蜜桃av噜噜一区二区三区| 亚洲第一天堂无码专区| 午夜免费久久久久| 国产精品久久网站| 国产精品99久久久久久久女警| 欧美激情精品久久久久久变态| 99视频日韩| 欧美精品久久久久久| 亚洲一区二区在| 亚洲国产高清一区| 国产一区日韩二区欧美三区| 尤物视频一区二区| 欧美日韩福利在线观看| 欧美精品午夜视频| 亚洲福利视频网| 久久亚洲精品一区二区| 午夜在线一区二区| 欧美日韩在线三级| 国产精品福利片| 亚洲色图制服丝袜| 亚洲视屏在线播放| 亚洲午夜激情免费视频| 亚洲国产综合在线| 亚洲人成网在线播放| 久久久久久久性| 一本色道久久综合狠狠躁篇的优点| 免费在线国产精品| 亚洲美女色禁图| 亚洲精品乱码久久久久久黑人 | 狠狠久久五月精品中文字幕| 久久在线精品| 性高湖久久久久久久久| 国产亚洲欧美在线| 欧美刺激性大交免费视频| 欧美国产精品中文字幕| 亚洲婷婷国产精品电影人久久| 亚洲天堂av在线免费| 国产欧美一区二区精品性色| 久久综合久久综合这里只有精品| 久久综合色综合88| 亚洲少妇最新在线视频| 午夜亚洲视频| 91久久精品视频| 夜夜嗨一区二区三区| 国产亚洲电影| 亚洲国产精品热久久| 国产精品美女黄网| 亚洲高清一二三区| 欧美日韩在线观看视频| 国语自产精品视频在线看抢先版结局 | 亚洲第一精品在线| 午夜视频一区在线观看| 国产精品每日更新| 久久亚洲综合| 欧美日韩和欧美的一区二区| 久久黄色级2电影| 欧美黄色小视频| 久久精品国语| 欧美aaa级| 午夜在线成人av| 麻豆国产va免费精品高清在线| 国语精品一区| 亚洲自拍偷拍视频| 99热这里只有成人精品国产| 欧美亚洲三区| 一本色道久久综合亚洲精品按摩| 亚洲黄色在线| 在线电影国产精品| 亚洲自拍偷拍一区| 久久精彩免费视频| 午夜精品国产更新| 欧美日韩一区二区在线视频| 亚洲男人av电影| 欧美国产日韩一二三区| 一区二区在线视频播放| 洋洋av久久久久久久一区| 欧美一区二区三区免费视| 欧美一级免费视频| 亚洲一区二区欧美日韩| 99精品欧美一区| 亚洲精品国产精品乱码不99 | 欧美国产日韩xxxxx| 在线观看成人网| 久久免费视频观看| 一区二区免费看| 欧美日本中文| 欧美有码视频| 免费观看在线综合色| 国产精品综合网站| 免费观看日韩av| 亚洲精品一区二区三区婷婷月 | 久久精品主播| 日韩午夜av电影| 亚洲精品在线电影| 99re热这里只有精品免费视频| 国产精品久久久久久久久搜平片| 亚洲午夜91| 久久综合九色| 99国产精品久久久| 136国产福利精品导航网址应用 | 亚洲尤物精选| 亚洲自拍偷拍麻豆| 亚洲人成啪啪网站| 欧美在线啊v一区| 欧美色欧美亚洲高清在线视频| 久久综合给合久久狠狠狠97色69| 欧美日韩午夜视频在线观看| 国产婷婷色一区二区三区| 亚洲国产高清自拍| 亚洲美女淫视频| 午夜精品久久久久久久久久久久| 免费欧美日韩国产三级电影| 精品va天堂亚洲国产| 国产精品久久久一区二区| 亚洲国产精品va在线观看黑人 | 尤物精品国产第一福利三区| 久久国产精品亚洲77777| 亚洲国产精品高清久久久| 午夜精品久久久久久久99水蜜桃| 亚洲日本电影在线| 国产精品高清一区二区三区| 欧美jizzhd精品欧美喷水| 羞羞答答国产精品www一本| 欧美日在线观看| 亚洲欧美日韩国产| 亚洲国产中文字幕在线观看| 老司机午夜精品视频在线观看| 久久久久久九九九九| 久久国内精品自在自线400部| 亚洲淫片在线视频| 亚洲自拍电影| 亚洲精品中文字幕在线观看| 蜜臀久久99精品久久久久久9 | 欧美一区二区女人| 美女视频黄a大片欧美| 亚洲国产日韩欧美在线图片| 亚洲激情网址| 在线精品国产欧美| 午夜国产精品视频| 久久视频这里只有精品| 黄色日韩在线| 亚洲尤物视频在线| 一区二区免费看| 另类av导航| 欧美视频一区在线| 99精品国产福利在线观看免费| 亚洲精品色婷婷福利天堂| 久久久久久9| 亚洲乱码国产乱码精品精天堂| 欧美黄色精品| 999亚洲国产精| 亚洲国产人成综合网站| 欧美激情第3页| 伊人成年综合电影网| 欧美成人免费观看| 欧美日韩一区二区三区| 亚洲精品乱码久久久久| 亚洲乱亚洲高清| 欧美成年网站| 国产视频欧美| 欧美成人自拍| 亚洲高清不卡在线观看| 亚洲国产精品一区二区三区| 国产综合色在线| 久久综合九色| 在线一区日本视频| 乱中年女人伦av一区二区| 日韩视频三区| 国产视频综合在线| 久久综合伊人77777| 激情综合亚洲| 麻豆精品精华液| 欧美伊久线香蕉线新在线| 亚洲二区在线视频| 性欧美办公室18xxxxhd| 国产欧美日韩视频在线观看| 一区二区欧美精品| 亚洲人成人一区二区三区| 久久黄色级2电影| 99精品99| 国产精品久久国产精麻豆99网站| 在线视频欧美一区| 91久久精品国产91久久| 亚洲欧洲在线观看|