精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

新手如何快速上手LINQ to XML

開發(fā) 前端
本文的目的是讓從來沒有使用過LINQ to XML的童鞋在需要使用LINQ to XML技術(shù)的時候快速上手,然后用之于自己的程序開發(fā)中。

操作XML的技術(shù)有很多種:

1)DOM(Document Object Model,文檔對象模型),它為XML文檔提供了一個標(biāo)準(zhǔn)的解析。

2)XPath和XSLT,它們提供了查詢和格式化XML的功能。

3).NET框架中提供了一些對XML操作的類(在System.XML命名空間下)。

4)LINQ to XML。

在我看來有了LINQ to XML技術(shù),.NET中其它操縱XML的技術(shù)都可以棄而不用了,因?yàn)長INQ to XML操縱XML比其它技術(shù)都更簡單更方便也更直觀。

LINQ to XML 是基于LINQ的,所以可以使用LINQ的所有功能,如標(biāo)準(zhǔn)查詢操作符(詳細(xì)可閱讀《LINQ標(biāo)準(zhǔn)查詢操作符詳解》)和LINQ的編程接口。使用LINQ to XML可以很方便地將XML文件加載到內(nèi)存中,對XML文檔中的節(jié)點(diǎn)進(jìn)行查詢修改刪除等各種操作,然后又可以很方便地將操作后的XML文檔保存回磁盤。

System.Xml.Linq的命名空間中包含了LINQ to XML處理XML用到的所有類,共有19個類,如下所示。

類                                    說明

 

[[37481]]

Extensions                     包含 LINQ to XML 擴(kuò)展方法。

 

 

[[37481]]

XAttribute                       表示一個 XML 特性。

 

 

[[37481]]

XCData                          表示一個包含 CDATA 的文本節(jié)點(diǎn)。

 

 

[[37481]]

XComment                     表示一個 XML 注釋。

 

 

[[37481]]

XContainer                    表示可包含其他節(jié)點(diǎn)的節(jié)點(diǎn)。

 

 

[[37481]]

XDeclaration                  表示一個 XML 聲明。

 

 

[[37481]]

XDocument                    表示 XML 文檔。

 

 

[[37481]]

XDocument                    Type表示 XML 文檔類型定義 (DTD)。

 

 

[[37481]]

XElement                       表示一個 XML 元素。

 

 

[[37481]]

XName                            表示 XML 元素或特性的名稱。

 

 

[[37481]]

XNamespace                   表示一個 XML 命名空間。 此類不能被繼承。

 

 

[[37481]]

XNode                             表示 XML 樹中節(jié)點(diǎn)的抽象概念(元素、注釋、文檔類型、處理指令或文本節(jié)點(diǎn))。

 

 

[[37481]]

XNodeDocumentOrderComparer            包含用于比較節(jié)點(diǎn)的文檔順序的功能。 無法繼承此類。

 

 

[[37481]]

XNodeEqualityComparer                        比較節(jié)點(diǎn)以確定其是否相等。 無法繼承此類。

 

 

[[37481]]

XObject                                                  表示 XML 樹中的節(jié)點(diǎn)或特性。

 

 

[[37481]]

XObjectChangeEventArgs                     提供有關(guān) Changing 和 Changed 事件的數(shù)據(jù)。

 

 

[[37481]]

XProcessingInstruction                          表示 XML 處理指令。

 

 

[[37481]]

XStreamingElement                               表示支持延遲流輸出的 XML 樹中的元素。

 

 

[[37481]]

XText                                                     表示一個文本節(jié)點(diǎn)。

 

這19個類提供了很多很多的方法,事實(shí)上很少人會在學(xué)習(xí)LINQ to XML的時候去學(xué)習(xí)每一種的方法的細(xì)節(jié),本文的目的是讓從來沒有使用過LINQ to XML的童鞋在需要使用LINQ to XML技術(shù)的時候快速上手然后用之于自己的程序開發(fā)中,所以本文只講LINQ to XML處理XML類中最常用、用到最多的三個類,分別是XDocument、XElement和XAttribute。

XDocument類派生于XContainer類,因此它可以有子節(jié)點(diǎn),但XML的標(biāo)準(zhǔn)限制了XDocument對象只包含單個XElement子節(jié)點(diǎn),因?yàn)閄ML文檔只允許有一個根節(jié)點(diǎn)。

XDocument提供了處理有效XML文檔,包括聲明、注釋和處理指令。

XDocument 可以包含以下元素:

1)一個 XDeclaration 對象。 XDeclaration 使您能夠指定 XML 聲明的相關(guān)部分:XML 版本、文檔的編碼以及 XML 文檔是否是獨(dú)立的。

2)一個 XElement 對象。 這是 XML 文檔的根節(jié)點(diǎn)。

3)任意數(shù)目的 XProcessingInstruction 對象。 處理指令將信息傳遞給處理 XML 的應(yīng)用程序。

4)任意數(shù)目的 XComment 對象。 注釋將與根元素同級。 XComment 對象不能是列表中的***個參數(shù),因?yàn)?XML 文檔以注釋開頭無效。

5)一個用于 DTD 的 XDocumentType。

XDocument類提供的方法可參考MSDN文檔

XElement派生自XContainer,而XContainer又派生于XNode類,所以一個元素也是一個節(jié)點(diǎn)。通過XElement可以創(chuàng)建XML的元素,添加和修改,移除元素以及子元素。

XElement類提供了很多方法,因?yàn)橐粋€XML文檔中最為核心的東西就是XElement,這些方法使得我們處理XML提供如囊中取物般簡單。

XElement類提供的方法可以參考MSDN文檔

XAttribute派生于XObject類,不是派生于XNode類,所以XAttribute不能作為XML樹中的節(jié)點(diǎn),它是與XElement相關(guān)聯(lián)的名稱/值對,也就是XAttibute不能獨(dú)立于元素而存在。

XAttribute類提供的方法可參考MSDN文檔

本文的重點(diǎn)是講述如何用LINQ to XML技術(shù)操縱XML文檔,包含如何創(chuàng)建一個XML文檔,如何保存XML文檔,如何遍歷XML文檔元素,如何查找XML文檔元素,如何更新XML文檔的元素,如何刪除XML文檔元素等,下面我們假設(shè)一個應(yīng)用場景來使用LINQ to XML技術(shù)來實(shí)現(xiàn)剛才所說的種種操作。

場景:將中國的省市區(qū)信息保存在一個XML文檔中,可以方便地對該文檔進(jìn)行各種操作,如查詢,更新,刪除元素等。

下面我們先創(chuàng)建省市區(qū)的相關(guān)類,如下:

  1. public class Province  
  2.     {  
  3.        /// <summary> 
  4.        /// 省份名稱  
  5.        /// </summary> 
  6.        public string Name { get; set; }  
  7.        /// <summary> 
  8.        /// 省會  
  9.        /// </summary> 
  10.        public string Capital { get; set; }  
  11.  
  12.     }  
  13.  
  14.     public class City  
  15.     {  
  16.         /// <summary> 
  17.         /// 城市名稱  
  18.         /// </summary> 
  19.         public string Name { get; set; }  
  20.         /// <summary> 
  21.         /// 城市編號  
  22.         /// </summary> 
  23.         public string Code { get; set; }  
  24.  
  25.         public Province Province { get; set; }  
  26.     }  
  27.  
  28.     public class District  
  29.     {  
  30.         /// <summary> 
  31.         /// 區(qū)名  
  32.         /// </summary> 
  33.         public string Name { get; set; }  
  34.  
  35.         /// <summary> 
  36.         /// 描述  
  37.         /// </summary> 
  38.         public string Description { get; set; }  
  39.  
  40.         public City City { get; set; }  
  41.     } 

1)如何創(chuàng)建一個保存中國省市區(qū)信息的XML文檔。

使用LINQ to XML 創(chuàng)建一個XML文檔非常簡單,代碼如下:

  1. static void Main(string[] args)  
  2.         {  
  3.             //獲取當(dāng)前應(yīng)用程序目錄下Area.xml文件的路徑  
  4.             string _filePath = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Area.xml");  
  5.             FileInfo fiXML = new FileInfo(_filePath);  
  6.             //如果文件不存在  
  7.             if (!(fiXML.Exists))  
  8.             {  
  9.                 XDocument xelLog = new XDocument(  
  10.                     new XDeclaration("1.0", "utf-8", "yes"),  
  11.                     new XComment("XML File For AREA"),  
  12.                     new XElement("Provinces",  
  13.                                  new XElement("Province", new XAttribute("Name", "省份"),  
  14.                                               new XElement("City", new XAttribute("Name", "城市"),  
  15.                                                            new XElement("District", new XAttribute("Name", "行政區(qū)")))  
  16.  
  17.                                      )  
  18.                         )  
  19.                     );  
  20.                 xelLog.Save(_filePath);  
  21.             }  
  22.         } 

這段代碼使用指定的內(nèi)容初始化 XDocument 類的新實(shí)例,然后調(diào)用XDocument的Save方法來生成一個XML文檔。很少使用XDocument來創(chuàng)建XML樹,通常是使用 XElement 根節(jié)點(diǎn)創(chuàng)建 XML 樹。除非具有創(chuàng)建文檔的具體要求(例如,必須在***創(chuàng)建處理指令和注釋,或者必須支持文檔類型),否則使用 XElement 作為根節(jié)點(diǎn)通常會更方便。運(yùn)行這段代碼,就會在生成的應(yīng)用程序根目錄下創(chuàng)建一個名為Area.xml的文檔,文檔內(nèi)容如下:

  1. <?xml version="1.0" encoding="utf-8" standalone="yes"?> 
  2. <!--XML File For AREA--> 
  3. <Provinces> 
  4.   <Province Name="省份"> 
  5.     <City Name="城市"> 
  6.       <District Name="行政區(qū)" /> 
  7.     </City> 
  8.   </Province> 
  9. </Provinces> 

 

 

 

2)如何將一個XML樹加載到程序內(nèi)存。

我們操作一個XML文檔首先是需要將該文檔加載到程序的內(nèi)存中,在LINQ to XML中,通常是使用XElement類型的Load方法將XML文檔自根節(jié)點(diǎn)開始的XML樹加載到一個XElement類型的對象中,然后我們就可以采用XElement提供的各種方法對這個內(nèi)存中XML文檔進(jìn)行各種操作。

我們創(chuàng)建一個LINQtoXML的幫助類LinqToXmlHelper.cs,將對XML操作的相關(guān)方法都寫在這個類里面,下面是一個加載XML文檔到XElement對象的方法。

  1. /// <summary> 
  2.         /// 將Area.xml文檔加載到內(nèi)存中的XElement類型的對象xElement,成功調(diào)用 XElement.Load方法后會在xElement保存整棵XML樹  
  3.         /// </summary> 
  4.         /// <returns></returns> 
  5.         public XElement Load()  
  6.         {  
  7.             XElement xElement = XElement.Load(_filePath);  
  8.             return xElement;  
  9.         } 

我們剛才已經(jīng)創(chuàng)建了一個XML文檔,現(xiàn)在我們將這個文檔加載到內(nèi)存中,然后打印這個XElement對象。

  1. static void Main(string[] args)  
  2.         {  
  3.             LinqToXmlHelper linqToXmlHelper = new LinqToXmlHelper();  
  4.             var elements = linqToXmlHelper.Load();  
  5.             string str = elements.ToString();  
  6.  
  7.             Console.WriteLine(str);  
  8.             Console.ReadKey();  

輸出結(jié)果如下:

 

 

3)如何向現(xiàn)有的XML文檔插入新的元素

到現(xiàn)在,我們已經(jīng)了解了LINQ to XML中創(chuàng)建和加載XML文檔的方式,接下來的問題就是如何向一個已經(jīng)存在的XML文檔添加新的節(jié)點(diǎn)。下面是增加新元素的方法,我們可以向Area.xml文檔中添加新是省份城市和區(qū)域信息,如果已經(jīng)存在的區(qū)域則進(jìn)行更新,這里用XElement的Save對更改后的XML文檔進(jìn)行保存。

  1. /// <summary> 
  2.        /// 增加新元素,如果要增加的區(qū)已經(jīng)存在,則對區(qū)的Description進(jìn)行更新  
  3.        /// </summary> 
  4.        /// <param name="districts"></param> 
  5.        public void AddElement(IList<District> districts)  
  6.        {  
  7.            if(districts==null||districts.Count==0) return;  
  8.  
  9.            XElement xElement = Load();  
  10.            foreach (District district in districts)  
  11.            {  
  12.                if (district.City == null || district.City.Province == null)  
  13.                {  
  14.                    continue;  
  15.                }  
  16.                XElement provinceElement = xElement.Elements("Province").Where(e => ((string)e.Attribute("Name")).Equals(district.City.Province.Name)).FirstOrDefault();  
  17.               //判斷該省份是否存在,不存在曾增加該省份的節(jié)點(diǎn)  
  18.                if(provinceElement==null)  
  19.                {  
  20.                     provinceElement = new XElement("Province", new XAttribute("Name", district.City.Province.Name), new XAttribute("Capital", district.City.Province.Capital));  
  21.                    xElement.Add(provinceElement);  
  22.                }  
  23.  
  24.                XElement cityElement = provinceElement.Elements("City").Where(e => ((string)e.Attribute("Name")).Equals(district.City.Name)).FirstOrDefault();  
  25.                //判斷該城市是否存在,不存在則在對應(yīng)省份下增加該城市的節(jié)點(diǎn)  
  26.                if(cityElement==null)  
  27.                {  
  28.                    cityElement = new XElement("City", new XAttribute("Name", district.City.Name), new XAttribute("Code", district.City.Code));  
  29.                    provinceElement.Add(cityElement);  
  30.                }  
  31.  
  32.                XElement districtElement = xElement.Elements("District").Where(e => ((string)e.Attribute("Name")).Equals(district.Name)).FirstOrDefault();  
  33.                //如果存在該區(qū)域的節(jié)點(diǎn)則先刪除在添加,以這種方式更新節(jié)點(diǎn)  
  34.                if(districtElement!=null)  
  35.                {  
  36.                    districtElement.Remove();  
  37.                }  
  38.                districtElement = new XElement("District", new XAttribute("Name", district.Name), new XAttribute("Description", district.Description));  
  39.                cityElement.Add(districtElement);  
  40.  
  41.            }  
  42.           //操作完畢,將內(nèi)存中的XML樹保存回硬盤的XML文檔中。  
  43.          xElement.Save(_filePath);  
  44.        } 

上面的AddElement方法中,調(diào)用XElement對象的傳一個XElement對象的Add方法, 可以將一個XElement對象(節(jié)點(diǎn))添加為一個已有節(jié)點(diǎn)的最后子節(jié)點(diǎn)。這樣我們通過Add的方式就可以輕易擴(kuò)展一個節(jié)點(diǎn)的子節(jié)點(diǎn)。

下面調(diào)用增加新元素AddElement方法,將一個區(qū)的集合信息保存到Area.xml文檔中,然后打印XML樹。代碼如下:

  1. static void Main(string[] args)  
  2.         {  
  3.               
  4.             LinqToXmlHelper linqToXmlHelper = new LinqToXmlHelper();  
  5.             Province province = new Province() { Name = "廣東省"Capital = "廣州市" };  
  6.             City city = new City() { Name = "廣州市"Code = "020"Province = province };  
  7.             IList<District> districts = new List<District>()  
  8.                                             { new District() {City = cityName = "天河區(qū)"Description = "天河區(qū)的描述"}, new District() {City = cityName = "越秀區(qū)"Description = "越秀區(qū)的描述"}  
  9.                                                   
  10.                                             };  
  11.             linqToXmlHelper.AddElement(districts);  
  12.             XElement xElement = linqToXmlHelper.Load();  
  13.             Console.WriteLine(xElement.ToString());  

輸出結(jié)果如圖:

 

 

4)如何查詢和遍歷XML文檔的元素

根據(jù)XElement類型提供的Elements方法,我們可以獲取某個節(jié)點(diǎn)的所有子節(jié)點(diǎn)元素,也可以通過傳入節(jié)點(diǎn)名稱為參數(shù),獲取某個節(jié)點(diǎn)下所有和參數(shù)節(jié)點(diǎn)名稱相匹配的節(jié)點(diǎn)集合,可以根據(jù)XElement類型提供的Attibute方法獲取某節(jié)點(diǎn)的屬性信息,下面代碼示例根據(jù)城市名查詢該城市下所有的區(qū)的信息:

  1. /// <summary> 
  2.         /// 根據(jù)城市名查詢該城市下所有的區(qū)的信息  
  3.         /// </summary> 
  4.         /// <param name="cityName"></param> 
  5.         /// <returns></returns> 
  6.         public IList<District> GetDistricts(string cityName)  
  7.         {  
  8.             IList<District> districts = new List<District>();  
  9.             XElement xElement = Load();  
  10.             //獲取城市名為變量cityName的節(jié)點(diǎn)的所有子節(jié)點(diǎn)  
  11.             IEnumerable<XElement> xElementxElements =  
  12.                 xElement.Elements("Province").Elements().Where(e => ((string) e.Attribute("Name")).Equals(cityName)).Elements();  
  13.             foreach (XElement element in xElements)  
  14.             {  
  15.                 District district = new District();  
  16.                 district.Name = (string) element.Attribute("Name");  
  17.                 district.Description = (string) element.Attribute("Description");  
  18.                 districts.Add(district);  
  19.  
  20.             }  
  21.             return districts;  
  22.         } 

調(diào)用GetDistricts方法

  1. static void Main(string[] args)  
  2.         {  
  3.               
  4.             LinqToXmlHelper linqToXmlHelper = new LinqToXmlHelper();  
  5.             IList<District> districts = linqToXmlHelper.GetDistricts("廣州市");  
  6.             foreach (var district in districts)  
  7.             {  
  8.                 Console.WriteLine(district.Name);  
  9.             }  
  10.           } 

輸出結(jié)果為:

天河區(qū)

越秀區(qū)

5)如何刪除XML文檔中的節(jié)點(diǎn)元素

刪除區(qū)的節(jié)點(diǎn)元素的方法,這里假定區(qū)的名稱是唯一的

  1. /// <summary> 
  2.         /// 刪除區(qū)的節(jié)點(diǎn)元素,這里假定區(qū)的名稱是唯一的  
  3.         /// </summary> 
  4.         /// <param name="districts"></param> 
  5.         public void DeleteElement(IList<District> districts)  
  6.         {  
  7.             XElement xElement = Load();  
  8.             foreach (District district in districts)  
  9.             {  
  10.                  
  11.                 XElement districtElement = xElement.Elements("Province").Elements("City").Elements("District").Where(e => ((string)e.Attribute("Name")).Equals(district.Name)).FirstOrDefault();  
  12.                 if(districtElement!=null)  
  13.                 {  
  14.                     districtElement.Remove();  
  15.                 }  
  16.             }  
  17.             xElement.Save(_filePath);  
  18.  
  19.         } 

調(diào)用XElement.Remove方法可以在當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)上刪除當(dāng)前節(jié)點(diǎn)。下面代碼刪除區(qū)節(jié)點(diǎn)中名稱為“越秀區(qū)”的節(jié)點(diǎn)。

  1. static void Main(string[] args)  
  2.         {  
  3.               
  4.             LinqToXmlHelper linqToXmlHelper = new LinqToXmlHelper();  
  5.             IList<District> districts = new List<District>(){new District(){Name = "越秀區(qū)"} };  
  6.             linqToXmlHelper.DeleteElement(districts);  
  7.             XElement xElement = linqToXmlHelper.Load();  
  8.             Console.WriteLine(xElement.ToString());  
  9.             Console.ReadKey();  
  10.  
  11.         } 

輸出結(jié)果為:

 

 

到這里,你已經(jīng)看到了LINQ to XML技術(shù)操作XML最為常用一些功能,包括創(chuàng)建和加載XML文檔,新增刪除更新XML節(jié)點(diǎn)等。

原文:http://www.cnblogs.com/zoupeiyang/archive/2011/07/25/2115941.html

【編輯推薦】

  1. Linq to xml操作XML
  2. XML之父解讀未來互聯(lián)網(wǎng)"游戲化"的三個真諦
  3. Ajax和Web服務(wù)數(shù)據(jù)格式:XML SOAP HTML
  4. 超強(qiáng)解析XML——簡單直接的來
  5. 解析PHP中的XML數(shù)據(jù)
責(zé)任編輯:陳貽新 來源: 邊寫邊唱的博客
相關(guān)推薦

2011-07-26 13:58:17

LINQ

2011-07-22 08:43:08

XML

2022-08-19 07:13:45

SQL方法編程

2013-11-19 12:53:33

OA信息化

2023-10-15 12:18:36

MPLS網(wǎng)絡(luò)

2009-09-17 13:54:26

LINQ to XML

2009-01-04 16:58:48

LINQ to XMLLINQXML

2009-09-17 13:30:32

LINQ to XML

2009-09-16 16:52:50

LINQ to XML

2009-09-14 15:12:40

LINQ to XML

2009-09-16 15:33:22

LINQ to XML

2009-09-14 16:46:15

LINQ to XML

2009-09-14 16:41:23

LINQ To XML

2009-09-16 16:59:05

LINQ to XML

2016-12-27 14:06:36

Python代碼基礎(chǔ)

2023-08-07 08:12:12

開源項(xiàng)目社區(qū)性質(zhì)feature

2017-03-06 11:02:59

產(chǎn)品軟件Power Desig

2009-09-08 17:45:13

Ophone Widg

2009-09-14 16:51:33

LINQ XML樹加載

2009-09-14 15:45:28

LINQ刪除XML節(jié)點(diǎn)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国产精品二区二区三区| xx视频.9999.com| 青青青国产在线观看| 欧美精品a∨在线观看不卡 | 国产精品99精品久久免费| 欧美高跟鞋交xxxxxhd| 国产三级国产精品| 中文字幕成人| 欧美日韩国产精品| 亚洲欧洲中文| 亚洲国产精品一| 日本在线不卡视频| 九九精品在线观看| 日本少妇xxxxx| 1204国产成人精品视频| 欧美性感一类影片在线播放| 成人区一区二区| 阿v免费在线观看| 99久久久国产精品| 91在线无精精品一区二区| 1级黄色大片儿| 午夜欧美精品久久久久久久| 一区二区成人精品| 日本一区二区在线观看视频| 欧美亚洲人成在线| 色老汉一区二区三区| 青草视频在线观看视频| 久cao在线| 国产欧美一区二区精品久导航 | 一道本一区二区三区| 日韩欧美一级在线播放| 亚洲老女人av| 日韩三级影视| 欧美日韩视频在线| 久久综合久久久久| 成视频免费观看在线看| 中文字幕欧美区| 欧美乱偷一区二区三区在线| 黄频在线免费观看| 国产成人免费高清| 91亚洲人电影| 国产免费一区二区三区最新不卡 | 国产成人精品网站| 日韩av电影网址| 亚洲视频狠狠| 久久99精品视频一区97| 国产精品国产精品88| 日本欧美视频| 国产一区二区三区久久精品| 人妻丰满熟妇aⅴ无码| 理论片一区二区在线| 精品久久久久久久久久久久久久久久久| 污视频网址在线观看| 丁香久久综合| 欧美午夜理伦三级在线观看| www.色偷偷.com| 韩国三级一区| 欧美色视频在线观看| 不卡的av中文字幕| 四虎地址8848精品| 91精品综合久久久久久| aaa一级黄色片| 麻豆视频久久| 精品女同一区二区| 色婷婷精品久久二区二区密| 韩国女主播一区二区三区| 亚洲电影免费观看高清完整版在线 | 精品va天堂亚洲国产| 波多野结衣三级视频| 91精品导航| 亚洲美女自拍视频| av电影网站在线观看| 91欧美国产| 欧美大胆a视频| 日韩成人免费在线观看| 久久都是精品| 国产日产久久高清欧美一区| 99草在线视频| 91丨porny丨首页| 亚洲成人自拍视频| 草莓福利社区在线| 无码av免费一区二区三区试看| 久久网站免费视频| 国产欧美在线观看免费| 日韩欧美在线网站| 欧美熟妇精品一区二区蜜桃视频 | 一本一道久久a久久综合精品| 欧美另类极品| 亚洲在线成人精品| 青青青在线播放| 国产精品美女久久久久人| 精品国产伦一区二区三区观看方式 | 亚洲欧美激情一区二区| av之家在线观看| 国产亚洲欧美日韩精品一区二区三区 | 中文字幕欧美区| 国产性生活免费视频| 在线天堂资源| 3d成人动漫网站| 免费的av网站| 91精品国产成人观看| 韩国v欧美v日本v亚洲| 中文在线a天堂| 成人国产精品免费| 亚洲精品久久久久久一区二区| 日本高清在线观看| 欧洲亚洲国产日韩| 国产草草浮力影院| 一区二区免费不卡在线| 欧美又大又硬又粗bbbbb| 国产白浆在线观看| 中文一区一区三区高中清不卡| 国产精品无码免费专区午夜| 51一区二区三区| 亚洲国产天堂久久综合网| 久久久久麻豆v国产| 久久久亚洲人| 国产伦精品一区| 国产不卡在线| 欧美午夜一区二区三区| 亚洲黄色免费在线观看| 欧美日本精品| 成人黄色片网站| 国产高清自拍视频在线观看| 欧美日韩激情美女| 国产精品二区视频| 欧美一区影院| 成人国产精品色哟哟| 精品乱码一区二区三四区视频| 亚洲成人一区二区在线观看| 久久久久久无码精品人妻一区二区| 日韩理论电影大全| 国产精品国产三级国产专播精品人| 少妇喷水在线观看| 亚洲成人一区二区在线观看| 蜜桃视频无码区在线观看| 国产精品毛片一区二区在线看| 国产精品久久久久久久久久小说 | 国产精品免费网站在线观看| 99色精品视频| 日韩最新在线| 777精品视频| 日本精品一区二区在线观看| 一区二区三区在线不卡| 亚洲欧美激情一区二区三区| 伊人情人综合网| 91影视免费在线观看| 久久日韩视频| 91精品国产91热久久久做人人| 色哟哟一一国产精品| 韩国精品久久久| 综合操久久久| 欧美视频精品全部免费观看| 久久国产精彩视频| 黄片毛片在线看| 偷偷要91色婷婷| 在线免费观看成年人视频| 亚欧美中日韩视频| 日本高清久久一区二区三区| 亚洲成人看片| 色综合亚洲精品激情狠狠| 亚洲天堂网在线视频| 亚洲乱码一区二区三区在线观看| 欧美成人精品一区二区综合免费| 亚洲黄网站黄| 欧美一区二区三区成人久久片| 91综合国产| 欧美成人精品在线| 蜜桃久久一区二区三区| 欧美性色视频在线| 日本黄色小视频在线观看| 久久国产三级精品| 日本免费成人网| 天天躁日日躁狠狠躁欧美巨大小说| 国产精品高潮视频| 国产精品一区二区三区视频网站| 日韩欧美一卡二卡| 亚洲欧美自拍视频| 国产精品国产三级国产有无不卡| 69久久精品无码一区二区| 一区二区日韩免费看| 亚洲三级一区| 加勒比视频一区| 国产精品第二页| 伦理av在线| 永久免费精品影视网站| 99久久99久久久精品棕色圆| 五月天激情综合| 天堂网av2018| 99久久综合狠狠综合久久| a在线观看免费视频| 国产综合色产| 一区二区三区在线视频111| ccyy激情综合| 国产美女主播一区| 黄毛片在线观看| 久久久成人av| 国内精品一区视频| 欧美电影免费观看完整版| 亚洲高清视频免费观看| 亚洲国产综合91精品麻豆| 亚洲色图 激情小说| www.色精品| 自拍一级黄色片| 日韩精品一级二级 | 欧美日韩在线不卡一区| 国产亚洲精aa在线看| 日韩av免费网站| 91破解版在线观看| 蜜臀久久99精品久久久无需会员 | swag国产精品一区二区| 国产精品久久久久久久久久久久 | 欧美日韩免费高清一区色橹橹| 国产亚洲色婷婷久久99精品| 国产精品久久精品日日| 国产成人av一区二区三区不卡| 国产精品乡下勾搭老头1| 欧美成年人视频在线观看| 亚洲影视综合| 国产无限制自拍| 欧美日韩网址| 91社在线播放| 青青草国产成人a∨下载安卓| 蜜桃免费一区二区三区| 77成人影视| 成人黄色片视频网站| 亚洲精品tv| 国产精品中文在线| 456成人影院在线观看| 欧美一级电影免费在线观看| 91白丝在线| 国内精品久久久久久久| 九色91在线| 久久99精品国产99久久6尤物 | 亚洲欧美偷拍另类a∨色屁股| 五月天精品在线| 久久久91精品国产一区二区精品 | 国产女人18毛片水真多18| 国产九色精品成人porny| 国产高清av片| 国产二区国产一区在线观看| 欧美视频亚洲图片| 国产精品99久久久久久久女警| 男女污污视频网站| 国产乱人伦偷精品视频免下载| 国内av一区二区| 国产精品一区不卡| 日韩av成人网| 丰满岳乱妇一区二区三区| 国产a√精品区二区三区四区| 懂色av中文字幕一区二区三区| 不卡的一区二区| 成人黄色小视频在线观看| 久久精品女同亚洲女同13| 91在线一区二区三区| www.色天使| 国产精品三级电影| 黄色香蕉视频在线观看| 一区二区三区四区不卡在线 | 亚洲精品日韩在线| 欧美美女搞黄| 中文字幕日韩av综合精品| 免费在线毛片网站| 精品综合久久久久久97| 6699嫩草久久久精品影院| 亚洲91精品在线| 综合在线影院| 91久久精品美女高潮| 超碰地址久久| 欧美日本亚洲| 亚洲国产精品久久久久蝴蝶传媒| 人妻无码一区二区三区四区| 国产欧美三级| 亚洲综合色在线观看| 国产精品夜夜嗨| 9.1成人看片免费版| 国产精品久线在线观看| 久久久久久久久久91| 欧美性jizz18性欧美| 亚洲图片欧美在线| 精品国产3级a| 国产天堂素人系列在线视频| 久久亚洲国产精品| 日韩激情电影| 成人黄色午夜影院| 欧美亚洲色图校园春色| 在线看成人av电影| 亚洲一区图片| 原创真实夫妻啪啪av| 26uuu精品一区二区在线观看| 久久嫩草捆绑紧缚| 精品国产91久久久| 国产精品久久久久久久久毛片| 日韩av有码在线| 黄色网页网址在线免费| 欧美中文字幕在线播放| 精品国产亚洲一区二区在线观看| 欧美日韩亚洲一区二区三区四区| 91成人网在线观看| 成人性视频欧美一区二区三区| 国产精品一区二区视频| 超薄肉色丝袜一二三| 午夜精品久久久久久久| 国产口爆吞精一区二区| 亚洲天堂av在线免费| 欧美四级在线| 成人在线激情视频| 国产一区二区三区天码| 国产精品入口芒果| 国产精品自产自拍| 大吊一区二区三区| 一本大道久久a久久综合| 亚洲国产中文字幕在线| 久久精品视频亚洲| 欧美成人精品三级网站| 精品一区久久久久久| 欧美三区美女| 热久久久久久久久| 国产精品免费观看视频| 一级黄色在线视频| 日韩精品视频免费专区在线播放 | 黄色av网站在线免费观看| 久久人人爽人人爽人人片av高清| 中文字幕日本一区| 亚洲在线不卡| 久久国产精品免费| 在线免费看视频| 色综合久久九月婷婷色综合| 丝袜+亚洲+另类+欧美+变态| 午夜精品一区二区三区在线| baoyu135国产精品免费| 日韩黄色片在线| 成人一区在线看| 免费无码毛片一区二区app| 91麻豆精品国产91| 二区三区在线观看| 91亚洲人电影| 欧美日韩福利| 白丝校花扒腿让我c| 亚洲国产精品久久久久婷婷884 | 美脚丝袜脚交一区二区| 国产精品自在在线| 中文字幕亚洲欧美日韩| 日韩亚洲欧美成人一区| 午夜在线激情影院| 动漫美女被爆操久久久| 亚洲激情网址| 手机在线看片日韩| 一本大道久久a久久精品综合| 久久99久久| 国产精品高潮呻吟久久av野狼 | 国产精品午夜一区二区| 在线视频日韩精品| 亚洲国产精选| 97久久国产亚洲精品超碰热| 成人国产在线观看| 亚洲综合图片网| 深夜福利日韩在线看| 97精品资源在线观看| 日韩成人三级视频| 久久综合色之久久综合| 波多野结衣一二区| 日韩在线观看av| 大香伊人久久精品一区二区| 男人日女人逼逼| 国产精品伦一区二区三级视频| 国产人妖在线播放| 国内精品久久久| 精品毛片免费观看| 一级日本黄色片| 午夜国产不卡在线观看视频| 九色蝌蚪在线| 91九色国产视频| 在线亚洲自拍| 性色国产成人久久久精品| 精品久久久影院| 色成人免费网站| 男人的天堂视频在线| 91小视频免费观看| 91亚洲国产成人精品一区| 欧美激情一区二区三区在线视频观看 | 91视频青青草| 日韩av在线一区| 日本一区二区三区中文字幕| 日韩一级性生活片| 欧美国产日韩在线观看| 亚洲第一成年人网站| 国产91色在线播放| 欧美日韩亚洲一区在线观看| 亚洲AV无码国产成人久久| 欧美一级在线免费| 亚洲人成在线网站| 天天干天天操天天干天天操| av电影在线观看完整版一区二区| 在线观看国产一区二区三区| 97免费视频在线播放| 亚洲成人av| 国产探花视频在线播放| 亚洲国产精品人人爽夜夜爽| www一区二区三区|