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

如何在VC環(huán)境下編寫(xiě)程序讀取XML文件?

#import <msxml3.dll> named_guids  //導(dǎo)入動(dòng)態(tài)庫(kù),裝了IE5就有
using namespace MSXML2;     //引用命名空間,一般可以把命名空間理解成類(lèi)和接口的集合,呵呵,對(duì)不對(duì)我也不知道了
#include <vector>
using namespace std;
struct FIELD
{
public:
 CString  name;
 CString  type;
 CString  length;
 CString  explain;
 CString  allowNull;
 CString  autoIncrease;
};
class Xml
{
public:
 Xml(void);
 ~Xml(void);
private:
 HRESULT hr;
 MSXML2::IXMLDOMDocumentPtr pDoc; //XML文檔接口指針
public:
 void AddKey(CString moduleName,CString keyName, CString keyValue);
 CString ReadKeyValue(CString moduleName, CString keyName);
private:
 void NewDocument(CString moduleName, CString keyName, CString keyValue);
public:
 bool ReadTable(CTreeCtrl * tree);
 bool ReadFields(CString tableName,vector<FIELD> &fields);
 bool SaveTable(vector<FIELD> fields,CString tableName,bool bNew);
};

//-------------------------------------------------------------------------------------------------------------------------------------

上面是頭文件,這是cpp文件

#include "StdAfx.h"
#include "xml.h"

Xml::Xml(void)
{

 CoInitialize(NULL);                       //初始化COM
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMDocument,(void**)&pDoc); //創(chuàng)建XML文檔實(shí)例
}

Xml::~Xml(void)
{
 CoUninitialize();
}

void Xml::AddKey(CString moduleName,CString keyName, CString keyValue)
{
 CString selectString="AppSetting/"+moduleName;                //XML節(jié)點(diǎn)定位字符串,定位到節(jié)點(diǎn)名為moduleName的二級(jí)節(jié)點(diǎn),根節(jié)點(diǎn)取默認(rèn)名為"AppSetting"
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMDocument,(void**)&pDoc); //創(chuàng)建文檔實(shí)例
 CFileFind finder;                       //查找文件是否存在的MFC類(lèi)
 if(!finder.FindFile("Config.xml"))                   //查找文件是否存在,不存在則調(diào)用函數(shù)生成一個(gè)新的XML文件
 {
  NewDocument(moduleName,keyName,keyValue);
  return;
 }
 pDoc->load("Config.xml");                     //從應(yīng)用程序目錄中加載XML文件
 MSXML2::IXMLDOMNodePtr moduleNode;                   //XML節(jié)點(diǎn)接口指針
 MSXML2::IXMLDOMNodePtr keyNode;                    //同上
 MSXML2::IXMLDOMNodePtr selectNode;                   //同上
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMNode,(void**)&moduleNode); //創(chuàng)建節(jié)點(diǎn)實(shí)例
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMNode,(void**)&keyNode); //同上
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMNode,(void**)&selectNode); //同上
 moduleNode=pDoc->selectSingleNode((_bstr_t)selectString);             //定位到節(jié)點(diǎn)名為moduleName的二級(jí)節(jié)點(diǎn)
 if(moduleNode==NULL)                      //如果無(wú)法定位,說(shuō)明還不存在此節(jié)點(diǎn),生成一個(gè)新的節(jié)點(diǎn)
 {
  selectNode=pDoc->selectSingleNode("AppSetting");              //定位到根節(jié)點(diǎn),這里一定能定位成功,除非手動(dòng)改了XML文件
  moduleNode=pDoc->createNode(1,(_bstr_t)moduleName,"");             //生成新節(jié)點(diǎn)
        selectNode->appendChild(moduleNode);                 //將新節(jié)點(diǎn)添加到根節(jié)點(diǎn)
 }
 selectString+="/"+keyName;                     //XML節(jié)點(diǎn)定位字符串,定位到節(jié)點(diǎn)名為keyName的三級(jí)節(jié)點(diǎn)
 keyNode=pDoc->selectSingleNode((_bstr_t)selectString);              //定位到節(jié)點(diǎn)名為keyName的三級(jí)節(jié)點(diǎn)
 if(keyNode==NULL)                       //如果無(wú)法定位,說(shuō)明還不存在此節(jié)點(diǎn),生成一個(gè)新的節(jié)點(diǎn)
 {
  keyNode=pDoc->createNode(1,(_bstr_t)keyName,"");              //生成新節(jié)點(diǎn)
  moduleNode->appendChild(keyNode);                  //將新節(jié)點(diǎn)添加到節(jié)點(diǎn)名moduleName的節(jié)點(diǎn)
 }
 keyNode->text=(_bstr_t)keyValue;                   //給節(jié)點(diǎn)名為keyName的節(jié)點(diǎn)賦text值秋keyValue
 pDoc->save("Config.xml");                     //保存
}

CString Xml::ReadKeyValue(CString moduleName, CString keyName)
{
 CString selectString="AppSetting/"+moduleName+"/"+keyName;
 CString keyValue="";
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMDocument,(void**)&pDoc); //創(chuàng)建文檔實(shí)例
 CFileFind finder;                       //查找文件是否存在的MFC類(lèi)
 if(!finder.FindFile("Config.xml"))                   //查找文件是否存在,不存在則調(diào)用函數(shù)生成一個(gè)新的XML文件
 {
  return "";
 }
 pDoc->load("Config.xml");
 MSXML2::IXMLDOMNodePtr selectNode;                   //同上
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMNode,(void**)&selectNode); //創(chuàng)建節(jié)點(diǎn)實(shí)例
 selectNode=pDoc->selectSingleNode((_bstr_t)selectString);
 if(selectNode==NULL)
 {
  return "";
 }
 else
 {
  return (CString)((BSTR)selectNode->text);
 }
}

void Xml::NewDocument(CString moduleName, CString keyName, CString keyValue)
{
 CString strXml="<AppSetting><"+moduleName+"><"+keyName+">"+keyValue+"</"+keyName+"></"+moduleName+"></AppSetting>"; //XML字符串
 pDoc->loadXML((_bstr_t)strXml);                      //通過(guò)加載字符生成XML的Document,此處用方法loadXml,從文件加載用load,參考前面
 pDoc->save("Config.xml");                       //保存
}


bool Xml::ReadTable(CTreeCtrl * tree)
{
 CString selectString="DataResource/Tables/Table";
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMDocument,(void**)&pDoc); //創(chuàng)建文檔實(shí)例
 CFileFind finder;                       //查找文件是否存在的MFC類(lèi)
 if(!finder.FindFile("DataResource.xml"))                 //查找文件是否存在,不存在則調(diào)用函數(shù)生成一個(gè)新的XML文件
 {
  return false;
 }
 pDoc->load("DataResource.xml");
 MSXML2::IXMLDOMElementPtr node;                     //同上
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMElement,(void**)&node);  //創(chuàng)建節(jié)點(diǎn)實(shí)例
 MSXML2::IXMLDOMNodeListPtr selectNodes;                    
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMNodeList,(void**)&selectNodes);//創(chuàng)建節(jié)點(diǎn)列表實(shí)例
 selectNodes=pDoc->selectNodes((_bstr_t)selectString);               //查找節(jié)點(diǎn)集
 
 HTREEITEM tabItem=tree->GetChildItem(tree->GetRootItem());
 if(selectNodes==NULL)
 {
  return false;
 }
 else
 {
  for(long i=0;i<selectNodes->Getlength();i++)
  {
   
   node=selectNodes->Getitem(i);
   _variant_t nodeName=node->getAttribute("Name");
   
   tree->InsertItem((CString)nodeName.bstrVal,3,3,tabItem);
  }
  
  //return (CString)((BSTR)selectNode->text);
 }
 return true;
}
bool Xml::ReadFields(CString tableName,vector<FIELD> &fields)
{
 
 CString selectString="DataResource/Tables/Table";
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMDocument,(void**)&pDoc); //創(chuàng)建文檔實(shí)例
 CFileFind finder;                       //查找文件是否存在的MFC類(lèi)
 if(!finder.FindFile("DataResource.xml"))                 //查找文件是否存在,不存在則調(diào)用函數(shù)生成一個(gè)新的XML文件
 {
  return false;
 }
 pDoc->load("DataResource.xml");
 MSXML2::IXMLDOMElementPtr node;                     //同上
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMElement,(void**)&node);  //創(chuàng)建節(jié)點(diǎn)實(shí)例
 MSXML2::IXMLDOMNodeListPtr tableNodes;                    
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMNodeList,(void**)&tableNodes);//創(chuàng)建節(jié)點(diǎn)列表實(shí)例
 MSXML2::IXMLDOMNodeListPtr fieldNodes;                    
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMNodeList,(void**)&fieldNodes);//創(chuàng)建節(jié)點(diǎn)列表實(shí)例
 tableNodes=pDoc->selectNodes((_bstr_t)selectString);               //查找節(jié)點(diǎn)集
 
 if(tableNodes==NULL)
 {
  return false;
 }
 for(long i=0;i<tableNodes->Getlength();i++)
 {
  node=tableNodes->Getitem(i);
  CString nodeName=(CString)node->getAttribute("Name");
  if(nodeName==tableName)
  {
   fieldNodes=node->GetchildNodes();
   break;
  }
 }
 if(fieldNodes==NULL)
 {
  return false;
 }
 fields.clear();
 for(long i=0;i<fieldNodes->Getlength();i++)
 {
  FIELD field;
  node=fieldNodes->Getitem(i);
  field.autoIncrease=node->getAttribute("AutoIncrease");
  field.explain=node->getAttribute("Explain");
  field.length=node->getAttribute("Length");
  field.name=node->getAttribute("Name");
  field.type=node->getAttribute("Type");
  field.allowNull=node->getAttribute("AllowNull");
  fields.push_back(field);
  
 }
 return true;
}
bool Xml::SaveTable(vector<FIELD> fields,CString tableName,bool bNew)
{
 
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMDocument,(void**)&pDoc);   //創(chuàng)建文檔實(shí)例
 CFileFind finder;                         //查找文件是否存在的MFC類(lèi)
 if(!finder.FindFile("DataResource.xml"))                   //查找文件是否存在,不存在則調(diào)用函數(shù)生成一個(gè)新的XML文件
 {
  return false;
 }
 pDoc->load("DataResource.xml");
 CString selectString="";
 selectString="DataResource/Tables";
 MSXML2::IXMLDOMNodePtr tablesNode;
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMNode,(void**)&tablesNode);   //創(chuàng)建節(jié)點(diǎn)實(shí)例
 MSXML2::IXMLDOMElementPtr tableNode;                    //同上
 hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMElement,(void**)&tableNode);  //創(chuàng)建節(jié)點(diǎn)實(shí)例
 tablesNode=pDoc->selectSingleNode((_bstr_t)selectString);               //查找節(jié)點(diǎn)集
 if(bNew)
 {
  tableNode=pDoc->createNode(1,"Table","");
  tableNode->setAttribute("Name",(_bstr_t)tableName);
 }
 else
 {
  MSXML2::IXMLDOMNodeListPtr tableNodeList;                    
  hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMNodeList,(void**)&tableNodeList);  //創(chuàng)建節(jié)點(diǎn)列表實(shí)例
  tableNodeList=tablesNode->GetchildNodes();
  CString nodeName="";
  for(int i=0;i<tableNodeList->Getlength();i++)
  {
   tableNode=tableNodeList->Getitem(i);
   nodeName=tableNode->getAttribute("Name");
   if(nodeName.MakeLower()==tableName.MakeLower())
   {
    MSXML2::IXMLDOMElementPtr fieldNode;                   //同上
    hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMElement,(void**)&fieldNode);   //創(chuàng)建節(jié)點(diǎn)實(shí)例
    int fieldsCount=tableNode->GetchildNodes()->Getlength();
    for(int j=fieldsCount-1;j>-1;j--)
    {
     fieldNode=tableNode->GetchildNodes()->Getitem(j);
     tableNode->removeChild(fieldNode);
    }
    break;
   }
   if(i==tableNodeList->Getlength())
   {
    return false;
   }
  }
 }
 for(int i=0;i<fields.size();i++)
 {
  MSXML2::IXMLDOMElementPtr fieldNode;                   //同上
  hr=CoCreateInstance(MSXML2::CLSID_DOMDocument,NULL,CLSCTX_ALL,MSXML2::IID_IXMLDOMElement,(void**)&fieldNode); //創(chuàng)建節(jié)點(diǎn)實(shí)例
  fieldNode=pDoc->createNode(1,"Field","");
  FIELD field=fields[i];
  fieldNode->setAttribute("Name",(_bstr_t)field.name);
  fieldNode->setAttribute((_bstr_t)"AllowNull",(_bstr_t)field.allowNull);
  fieldNode->setAttribute((_bstr_t)"AutoIncrease",(_bstr_t)field.autoIncrease);
  fieldNode->setAttribute((_bstr_t)"Explain",(_bstr_t)field.explain);
  fieldNode->setAttribute((_bstr_t)"Length",(_bstr_t)field.length);
  fieldNode->setAttribute((_bstr_t)"Type",(_bstr_t)field.type);
  tableNode->appendChild(fieldNode);
 }
 if(bNew)
  tablesNode->appendChild(tableNode);
 pDoc->save("DataResource.xml");
 return true;
}







//下面是另外的一段代碼
{
 // TODO: Add your implementation code here
 CComPtr<xml::IXMLDOMDocument> pDoc;

 try
 {
  HRESULT hr = pDoc.CoCreateInstance(L"Msxml2.DOMDocument.4.0");
  if (FAILED(hr)) return hr;

  CComPtr<xml::IXMLDOMElement> pRoot;
  hr = pDoc->get_documentElement(&pRoot);
  if (FAILED(hr)) return hr;

  //create comment
  CComPtr<xml::IXMLDOMComment> pComm;
  hr=pDoc->createComment(CComBSTR(L"Compupacific Entry Template"),&pComm);
  if (FAILED(hr)) return hr;
  hr=pDoc->appendChild(pComm,0);

  //Root of the Doc
  CComPtr<xml::IXMLDOMElement> pElem;
  hr = pDoc->createElement(CComBSTR(L"Template"), &pElem);
  if (FAILED(hr)) return hr;

  hr = pDoc->putref_documentElement(pElem);
  if (FAILED(hr)) return hr;
  
  VARIANT var;
  var.vt=VT_BSTR;
  var.bstrVal=::SysAllocString(m_bstrCaption);
  hr = pElem->setAttribute(CComBSTR(L"Name"), var);
  ::SysFreeString(var.bstrVal);
  if (FAILED(hr)) return hr;
 
  VARIANT var1;
  var1.vt=VT_BSTR;
  var1.bstrVal=::SysAllocString(m_bstrSampleImage);
  hr = pElem->setAttribute(CComBSTR(L"Sample"), var1);
  ::SysFreeString(var1.bstrVal);
  if (FAILED(hr)) return hr;

  VARIANT var2;
  var2.vt=VT_I2;
  var2.iVal=m_shDock;
  hr = pElem->setAttribute(CComBSTR(L"Dock"), var2);
  if (FAILED(hr)) return hr;
 }
 catch(...)
 {
  ::MessageBox(NULL,_T("Error in save form property!"),_T("Error Report"),MB_OK);
  return S_FALSE;
 }
 try
 {
  //Now tell the form to persist its child controls
  CComBSTR Tmp;
  for(std::list<CAxWindowHandle* >::iterator it = m_listSites.begin(); it != m_listSites.end();it++)
  { 
   if(*it)
   {
    CComPtr<xml::IXMLDOMElement> pRoot;
    HRESULT hr = pDoc->get_documentElement(&pRoot);
    if (FAILED(hr)) return hr;
    
    CComPtr<xml::IXMLDOMNode> pNode;
    Tmp=OLESTR("Control");
    CComBSTR Tmp1;
    hr = pDoc->createNode(CComVariant(1),Tmp.m_str, Tmp1.m_str, &pNode);
    if (FAILED(hr)) return hr;
       
    hr = pRoot->appendChild(pNode.p, 0);
    if (FAILED(hr)) return hr;

    CComPtr<IPersistPropertyBag> spPersistPropBag;
    hr = (*it)->QueryControl(&spPersistPropBag);
    if (FAILED(hr)) return hr;
    
    hr = spPersistPropBag->InitNew();
    if (FAILED(hr)) return hr;

    CComPtr<IPersistPropertyBag> spExtendedPPB;
    if((*it)->m_pExtendedDispatchObj)
    {
     hr = (*it)->m_pExtendedDispatchObj->QueryInterface(&spExtendedPPB);
     if (FAILED(hr)) return hr;
    }
    
    CComQIPtr<xml::IXMLDOMElement> pElem(pNode);
    if(!pElem) return E_NOINTERFACE;
    
    //Save Extended Properties
    hr = SaveToXML(pDoc, pElem.p, spExtendedPPB, TRUE, TRUE);
    if (FAILED(hr)) return hr;

    //Save Native Properties
    hr = SaveToXML(pDoc, pElem.p, spPersistPropBag, TRUE, TRUE);
    if (FAILED(hr)) return hr;
   }
  }
   
  return pDoc->save(CComVariant(FileName));    
 }
 catch(...)
 {
  ::MessageBox(NULL,_T("Error in save control property!"),_T("Error Report"),MB_OK);
  return S_FALSE;
 }
}

posted on 2010-10-15 13:34 wrh 閱讀(2757) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


導(dǎo)航

<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

統(tǒng)計(jì)

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品一区二区三区不卡| 欧美中文字幕视频| 亚洲在线1234| 亚洲一区欧美激情| 亚洲综合清纯丝袜自拍| 亚洲欧美日韩国产一区| 欧美中文在线观看国产| 久久久精品午夜少妇| 久久久亚洲国产天美传媒修理工| 欧美主播一区二区三区| 久久免费视频观看| 母乳一区在线观看| 亚洲精品在线免费观看视频| 亚洲一区二区三区中文字幕 | 亚洲欧洲午夜| 亚洲激情自拍| 午夜精品影院| 欧美成人中文字幕| 国产精品福利久久久| 一区在线播放| 亚洲欧美成人一区二区三区| 久久一区激情| 亚洲天堂视频在线观看| 久久夜色精品国产亚洲aⅴ| 欧美母乳在线| 影音先锋亚洲电影| 午夜宅男久久久| 亚洲精品久久久久久久久久久久 | 在线视频欧美日韩| 久久人人爽爽爽人久久久| 欧美三级在线视频| 一区在线播放| 欧美在线高清视频| 999亚洲国产精| 久久综合99re88久久爱| 国产精品天美传媒入口| 亚洲人成免费| 六月婷婷久久| 亚洲天堂偷拍| 麻豆成人综合网| 欧美日韩国产丝袜另类| 伊人天天综合| 久久久av水蜜桃| 亚洲永久精品大片| 欧美日韩国产大片| 亚洲精品国产精品国产自| 久久久噜噜噜久久久| 一本一本a久久| 欧美区国产区| av成人激情| 亚洲精品一区二区三区在线观看 | 亚洲成色最大综合在线| 亚洲欧美在线播放| 日韩视频一区二区在线观看 | 亚洲欧美日韩精品一区二区| 欧美日韩免费观看一区=区三区| 在线成人激情| 裸体丰满少妇做受久久99精品| 午夜精品久久久久久99热软件| 国产精品久久国产愉拍 | 欧美国产精品一区| 久久中文字幕一区| 亚洲国产婷婷香蕉久久久久久| 久久精品免费电影| 亚洲精品在线免费观看视频| 欧美日韩国产黄| 亚洲一区二区免费在线| 亚洲视频1区2区| 国产精品一区二区在线观看不卡 | 久久精品国产精品| 性欧美1819sex性高清| 国产在线成人| 欧美激情视频一区二区三区在线播放| 麻豆精品一区二区av白丝在线| 亚洲经典一区| 日韩一区二区精品| 国产伦精品一区二区三区| 久久精品免费| 欧美精品v国产精品v日韩精品| 亚洲视频久久| 小黄鸭视频精品导航| 激情综合久久| 日韩特黄影片| 国产真实精品久久二三区| 欧美夫妇交换俱乐部在线观看| 欧美国产大片| 性欧美超级视频| 99视频在线观看一区三区| 久久综合给合久久狠狠色 | 国产精品成人免费| 久久久久久久91| 欧美成人免费在线| 亚洲欧美日韩综合| 久久久久久久久久久成人| 99精品国产在热久久下载| 亚洲女人天堂av| 亚洲黄色小视频| 亚洲综合欧美| 99re6这里只有精品视频在线观看| 亚洲影院污污.| 亚洲精品在线观看免费| 亚洲专区在线视频| 亚洲精品久久久久久久久| 午夜精品久久久久久久久久久| 亚洲精品久久久久久久久久久| 香蕉成人久久| 亚洲特黄一级片| 欧美+亚洲+精品+三区| 久久国内精品视频| 欧美日韩国产成人在线观看| 另类欧美日韩国产在线| 国产精品欧美久久| 亚洲人成网在线播放| 一区免费观看视频| 午夜精品久久久久久久白皮肤 | 激情小说另类小说亚洲欧美| 中文精品视频一区二区在线观看| 亚洲国产精品一区在线观看不卡 | 久久久欧美精品| 亚洲欧美色婷婷| 欧美日韩亚洲综合一区| 欧美国产一区视频在线观看| 国产性天天综合网| 亚洲在线观看视频网站| 一本久久知道综合久久| 久久这里有精品视频| 快she精品国产999| 国产日韩欧美成人| 亚洲欧美综合国产精品一区| 亚洲女性喷水在线观看一区| 欧美日韩免费视频| 99国产精品久久久久久久| 99re6热只有精品免费观看| 欧美激情无毛| 亚洲国产日韩欧美在线99| 亚洲国产一区在线观看| 久久亚洲美女| 欧美激情一区二区三区在线| 亚洲国产小视频| 欧美精品少妇一区二区三区| 亚洲韩国一区二区三区| 亚洲精选国产| 欧美日韩三级电影在线| 中文av一区特黄| 久久不射2019中文字幕| 国产在线日韩| 黄色另类av| 久久视频在线免费观看| 欧美在线视频一区二区| 国产视频丨精品|在线观看| 午夜精品久久久久久久久久久久久 | 亚洲韩国一区二区三区| 女同一区二区| 99精品国产福利在线观看免费| 亚洲在线免费| 国产欧美日韩精品在线| 久久精品123| 亚洲国产精品视频一区| 亚洲夜晚福利在线观看| 国产免费成人在线视频| 久久久久久电影| 亚洲欧洲精品一区| 西瓜成人精品人成网站| 一区二区三区中文在线观看| 欧美精品粉嫩高潮一区二区 | 日韩视频在线观看免费| 午夜精品视频| 玉米视频成人免费看| 欧美激情一区二区三区| 亚洲视频第一页| 麻豆精品网站| 亚洲夜间福利| 亚洲高清一二三区| 欧美丝袜一区二区三区| 欧美一区二区久久久| 亚洲国产天堂久久综合网| 亚洲欧美99| 亚洲日本电影| 国产亚洲精品aa午夜观看| 欧美成年视频| 欧美一区=区| 一本色道久久| 亚洲成人直播| 久久久成人精品| 亚洲影院污污.| 91久久亚洲| 激情综合网激情| 国产伦精品一区二区三区四区免费 | 国产一区在线播放| 国产精品v亚洲精品v日韩精品| 久久久午夜精品| 亚洲专区欧美专区| 一区电影在线观看| 亚洲国产三级网| 免费在线成人| 久久精品国产一区二区三区免费看| 一本一本久久| 日韩视频在线免费| 亚洲激情视频网站| 亚洲国产99|