欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
vc中的XML編程心得【原創(chuàng )】,懿懿博客
vc中的XML編程心得【原創(chuàng )】 杭州浪子 發(fā)表于 2006-10-18 9:25:27

發(fā)現很多網(wǎng)上的XML資料都是抄襲的很厲害,個(gè)人在網(wǎng)上資料的基礎上外加自己最近的一些心得總結了一下,寫(xiě)下了以下些內容,以便自己以后參考。

----------------------------------

1.XML標記都是大小寫(xiě)敏感的

2.文檔的聲明
<?XML version="1.0" encoding="GB2312" standalone="yes"?>
XML標記說(shuō)明它是一個(gè)XML文檔,后面兩個(gè)屬性值表明了它的版本號和編碼標準,standalone取yes表明該文件未引明其他外部XML文件

3.處理命令
格式:<?處理指令名 處理指令信息 ?>
<?XML-stylesheet type="text/xsl" href="/yxfqust.xsl" ?>

4.注釋
格式:<!--注釋內容-->
<!--以下是一個(gè)學(xué)生名單-->
注釋?xiě)⒁獾膯?wèn)題:
       1.注釋不能出現在XML聲明之前;
       2.注釋不能出現在標記中;
       3.注釋中不能出現連續兩個(gè)連字符,即"--"  如:<!--this is  a bad document.--do you know!-->;
       4.注釋中可包含元素,但元素中不能包含"--"包含的元素解析時(shí)被忽略;
       5.注釋不能嵌套;

5.元素與標記
 所有的XML文檔必須有一個(gè)根元素。
 XML語(yǔ)法規范要求XML元素屬性值必須用引號引著(zhù)。
·格式:<標記 屬性名1="值1".......>數據內容</標記>
XML元素是可以擴展的,它們之間有關(guān)聯(lián),XML元素有簡(jiǎn)單的命名規則:
Names can contain letters, numbers, and other characters (元素的名字可以包含子母,數字和其他字符。)
Names must not start with a number or punctuation character (元素的名字不能以數字或者標點(diǎn)符號開(kāi)頭。)
Names must not start with the letters XML (or XML or XML ..) (元素的名字不能以XML(或者XML,XML,XML...)開(kāi)頭。)
Names cannot contain spaces(元素的名字不能包含空格。)

6.語(yǔ)句的寫(xiě)法
 1.所有的標記都必須要有一個(gè)相應的結束標記;
 2.所有的XML標記都必須合理嵌套;
 3.所有XML標記都區分大小寫(xiě);
 4.所有標記的屬性必須用""括起來(lái);

7.
 1.XML描述數據類(lèi)型。例如:"King lear"是一個(gè)標題元素;
 2.CSS儲存并控制元素的顯示樣式。例如:標題將被以18pt字體顯示
 3.script腳本控制元素如何動(dòng)作。例如:當一個(gè)title元素"out of stock",將被用紅色顯示。
 4.DOM則為腳本和對象的交流提供一個(gè)公共平臺,并將結果顯示在瀏覽器窗口。

8.調用DTD文件的方法有兩種:

a.直接包含在XML文檔內的DTD

你只要在DOCTYPE聲明中插入一些特別的說(shuō)明就可以了,象這樣:

我們有一個(gè)XML文檔:

<?XML version="1.0" encoding="GB2312"?>

<myfile>

<title>XML輕松學(xué)習手冊</title>

<author>ajie</author>

</myfile>

我們在第一行后面插入下面代碼就可以:

<!DOCTYPE myfile [

<!ELEMENT title (#PCDATA)>

<!ELEMENT author (#PCDATA)>

<!ENTITY copyright "Copyright 2001, Ajie.">

]>
 

b.調用獨立的DTD文件

將DTD文檔存為.dtd的文件,然后在DOCTYPE聲明行中調用,例如,將下面的代碼存為myfile.dtd

<!ELEMENT myfile (title, author)>

<!ELEMENT title (#PCDATA)>

<!ELEMENT author (#PCDATA)>
 

然后在XML文檔中調用,在第一行后插入:

<!DOCTYPE myfile SYSTEM "myfile.dtd">

9.一個(gè)很?chē)乐氐恼`區:在寫(xiě)XML文檔時(shí),不經(jīng)意間把第一句“?”后面的xml寫(xiě)成了大寫(xiě)的,導致程序讀寫(xiě)失敗。應當引起注意!

10.關(guān)于XML的SDK,vc有自帶的MSXML.H文件,但導入之后發(fā)現有寫(xiě)方法跟很多書(shū)上用的方法不一樣,
#i nclude <msxml.h>
#import <msxml.dll> named_guids
using namespace MSXML;
-----
上面的方法不可取,然后就使用下載的SDK。
#i nclude "C:\Program Files\Microsoft XML Parser SDK\inc\msxml2.h"
再在link中把.lib文件包含進(jìn)來(lái),基本上就能調用里面的接口函數了。

下面說(shuō)一下using namespace MSXML;   使用這個(gè)是為了區分在不同的類(lèi)里面存在同樣的函數名或者在不同的函數里面存在不同的變量名。
反正就是為了防止混淆才使用這個(gè)方法的。

11.出錯處理的代碼:
    IXMLDOMParseError *pErr=NULL;
    BSTR bstr = NULL;

    pDoc->get_parseError(&pErr);
    pErr->get_reason(&bstr);
    CString strErr;
    strErr.Format("Load Failed ! %S", bstr);
    AfxMessageBox(strErr);

12.
關(guān)于BSTR類(lèi),在getElementsByTagName(BSTR tagName, IXMLDOMNodeList **resultList)方法中,tagName假如是CString類(lèi)型則調用方法:AllocSysString()

在定義了一個(gè)BSTR變量后,要記得釋放它  ::SysFreeString(bsText);

13.
hr = pDocument->put_async(VARIANT_FALSE);
hr = pDocument->put_validateOnParse(VARIANT_FALSE);
hr = pDocument->put_resolveExternals(VARIANT_FALSE);

a)添加子節點(diǎn)到父節點(diǎn)
pParent->appendChild(pChild, &pNode)

b)創(chuàng )建節點(diǎn)
VARIANT vtype;
vtype.vt = VT_I4;
V_I4(&vtype) = (int)type;
pDoc->createNode(vtype, bstrName, NULL, &pNode);

c)創(chuàng )建元素節點(diǎn)
pDoc->createElement(bstrName,pElement);
(pElement)->put_text(bstrText);

d)創(chuàng )建文本子節點(diǎn),并添加到父節點(diǎn)中
pDoc->createTextNode(bstrText,&pText);
pParent->appendChild(pText,& pNode)

e)創(chuàng )建// Create a processing instruction element.
BSTR bstrTarget = SysAllocString(L"xml");
BSTR bstrData = SysAllocString(L"version=‘1.0‘");
pDoc ->createProcessingInstruction(bstrTarget, bstrData, &pProcessingInstruction);
SysFreeString(bstrTarget);
SysFreeString(bstrData);

f)創(chuàng )建注釋節點(diǎn)
pDoc->createComment(bstrText, &pComment);

g)元素節點(diǎn)屬性值
得到屬性值
VARIANT v;
pEle->getAttribute(bstrName,&v);
CString str = v.bstrVal;
設置屬性值
CComVariant v(str);
pEle->setAttribute(bstrName, v);

h)節點(diǎn)屬性值
VARIANT v;
CString str;
long mCount;
得到節點(diǎn)屬性集
hr=pNod->get_attributes(&pNodeMap);
hr=pNodeMap->get_length(&mCount);
得到節點(diǎn)屬性
hr=pNodeMap->getNamedItem(bstrName,&pNode);
pNodeMap->get_item(i,&pNode);
得到節點(diǎn)屬性值
hr=pNode->get_nodevalue(&v);
str =v.bstrVal;
刪除節點(diǎn)屬性
MSXML2::IXMLDOMNode *moldNode;
mNodeMape->removeNamedItem(bstrName,&moldNode);
if (moldNode!=NULL) moldNode->Release();

i)節點(diǎn)
(1)得到節點(diǎn)、節點(diǎn)集
根據節點(diǎn)名稱(chēng)
pDoc->getElementsByTagName(bstrName,&pNodeList);
pNodeList->get_item(0,&pNode);
得到子節點(diǎn)集
hr=pNod->get_childNodes(&mNodeList);
long mCount;
MSXML2::IXMLDOMNode *pNodeSub;
mNodeList->get_length(&mCount);
hr=pNode->get_firstChild(&pNodeSub);
刪除子節點(diǎn)(包含刪除節點(diǎn)屬性、子節點(diǎn)、當前節點(diǎn))
刪除當前子節點(diǎn)
pNodeList->get_item(i,&pNode);
pNod->removeChild(pNode,&moldNode);
moldNode->Release();

(2)根據節點(diǎn)得到節點(diǎn)名稱(chēng)
pNod->get_nodeName(&bstrName);
(3)根據節點(diǎn)得到節點(diǎn)值
VARIANT v;
hr=pNod->get_nodevalue(&v);


j)XML文件操作
加載
VARIANT_BOOL status;
VARIANT vFileName;
(1)
pDoc->loadXML(bstrName,&status);
(2)
V_BSTR(&vFileName) = strFileName.AllocSysString();
V_VT(&vFileName) = VT_BSTR;
vResult = pDoc->load(vFileName,&status);
保存
BSTR pBFName = mFileName.AllocSysString();
CComVariant v(pBFName);
hr=pDoc->save(v);


BSTR bstr = NULL;
pDoc->get_xml(&bstr);


k)錯誤處理
BSTR bstr = NULL;
pDoc->get_parseError(&pObjError);
pObjError->get_reason(&bstr);
AfxMessageBox(_T("Failed to load DOM from books.xml. %S\n"),*bstr);

 

14.
/*****************************************************************
//據有關(guān)文檔介紹,以下一段來(lái)移除安全性的問(wèn)題,但是實(shí)際發(fā)現根本不需要
  IObjectSafety *pSafety;
  DWORD dwSupported, dwEnabled;

  if ( SUCCEEDED(iXMLDoc->QueryInterface(
         IID_IObjectSafety, (void**)&pSafety)))
  {
   pSafety->GetInterfaceSafetyOptions(
      MSXML::IID_IXMLDOMDocument, &dwSupported, &dwEnabled );
   pSafety->SetInterfaceSafetyOptions(
      MSXML::IID_IXMLDOMDocument, dwSupported, 0 );
  }
*******************************************************************/
iXMLDoc->loadXML(L"<customer><first_name>Don</first_name>" 
      L"<last_name>Hall</last_name></customer>", 
      &tEmpty);
  iXMLDoc->get_documentElement(&iXMLElm);
  iXMLElm->get_childNodes(&iXMLChild);
  iXMLChild->get_item(1,&iXMLItem);
  iXMLItem->get_xml(&bStr);
  MessageBox(NULL,bStr,TEXT("Caption"),MB_OK);

15.
使用過(guò)程中,有以下幾個(gè)方法是經(jīng)常用到的。
iXMLDoc->getElementsByTagName(L"PDATXL",&iXMLList);  //查找某個(gè)結點(diǎn)
iXMLList->get_length(&iLength_Person);  //取得結點(diǎn)鏈長(cháng)度
iXMLList->get_item(i,&iXMLNode);    //獲取結點(diǎn)鏈中的某一個(gè)結點(diǎn)
iXMLNode->get_firstChild(&iXMLNode2);   //選中某個(gè)結點(diǎn)的第一個(gè)子結點(diǎn)
iXMLNode->get_lastChild(&iXMLNode2);   //選中某個(gè)結點(diǎn)的最后一個(gè)子結點(diǎn)
iXMLNode->selectSingleNode(L"姓名",&iXMLNode2); //按名選擇子結點(diǎn)
iXMLNode2->get_text(&bStr);   //獲取結點(diǎn)的內容
iXMLNode->get_attributes(&iXMLMap);    //獲取節點(diǎn)的屬性鏈

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
VC++ MSXML創(chuàng )建XML文件以及對XML文檔解析
getNodeValue() 出現漰潰
VC
【轉】msxml 操作xml
MFC XML 讀寫(xiě)
剛開(kāi)始學(xué)習xml,請教
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久