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

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

C++中DOM寫XML

用MSXML 4.0:
1)用一般的指針
2)用智能指針,比較簡單

下面的例子用智能指針:
 步驟:
        

Programmatically, the dynamDOMsmart application performs the following steps:

  1. Creates an XML DOM instance (pXMLDom).
  2. Calls the createProcessInstruction method on pXMLDom. This creates a processing instruction node (pi) targeted for XML 1.0.
  3. Calls the appendChild method on pXMLDom. This adds the processing instruction node (pi) to pXMLDom.
  4. Calls the createComment method on the DOM object (pXMLDom) to create a comment node (pc) and then append it pXMLDom.
  5. Creates a <root> element as the document element, with a created attribute whose value is set to a string value of "using DOM". Adds this element (<root>) to the DOM object (pXMLDom).
  6. Creates a <node1> element with some character data as its content. Appends this element (pe) to the document element (documentElement) of the DOM object (pXMLDom).
  7. Creates a <node2> element that contains a CDATA section (pcd) with markup text. Appends this element (pe) to the document element (documentElement) of the DOM object (pXMLDom).
  8. Creates a <node3> element that contains a DOM document fragment (pdf). This fragment contains three other empty child elements: <subNode1>, <subNode2>, and <subNode3>. The code then appends this element (pe) to the document element (documentElement) of the DOM object (pXMLDom).
  9. Saves this dynamically created DOM object to the project's main directory, and prints the XML data in the application console.
源代碼:
#include <stdio.h>
#import 
<msxml4.dll>
using namespace MSXML2;
int main(int argc, char* argv[])
{
IXMLDOMDocument3Ptr pXMLDom;
HRESULT hr;
CoInitialize(NULL);
hr 
= pXMLDom.CreateInstance(__uuidof(DOMDocument40));
if (FAILED(hr))
{
printf(
"Failed to CreateInstance on an XML DOM");
return NULL;
}

pXMLDom
->preserveWhiteSpace = VARIANT_TRUE;
// Create a processing instruction targeted for xml.
IXMLDOMProcessingInstructionPtr pi;
pi 
= pXMLDom->createProcessingInstruction("xml""version='1.0'");
if (pi != NULL) {
pXMLDom
->appendChild(pi);
pi.Release();
}

// Create a processing instruction targeted for xml-stylesheet.
pi = pXMLDom->createProcessingInstruction("xml-stylesheet",
"type='text/xml' href='dom.xsl'");
if (pi != NULL) {
pXMLDom
->appendChild(pi);
pi.Release();
}

// Create a comment for the document.
IXMLDOMCommentPtr pc;
pc 
= pXMLDom->createComment("sample xml file created using XML DOM object.");
if (pc != NULL) {
pXMLDom
->appendChild(pc);
pc.Release();
}

// Create the root element (i.e., the documentElement).
IXMLDOMElementPtr pe;
pe 
= pXMLDom->createElement("root");
// Create a "created" attribute for the root element and
// assign the "using dom" character data as the attribute value.
IXMLDOMAttributePtr pa;
pa 
= pXMLDom->createAttribute("created");
if (pa != NULL)
{
pa
->value = "using dom";
pe
->setAttributeNode(pa);
pa.Release();
}

// Add the root element to the DOM instance.
pXMLDom->appendChild(pe);
pe.Release();
// Next, we will create and add more nodes to the root element
// we've just created.
// Create an element to hold text content.
pe = pXMLDom->createElement("node1");
if (pe != NULL)
{
// Add newline + tab for indentation.
pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t"));
pe
->text = "some character data";
pXMLDom
->documentElement->appendChild(pe);
pe.Release();
}

// Create an element to hold a CDATA section.
pe=pXMLDom->createElement("node2");
if (pe != NULL)
{
// Add newline + tab for indentation.
pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t"));
IXMLDOMCDATASectionPtr pcd;
pcd 
= pXMLDom->createCDATASection("<some mark-up text>");
if (pcd != NULL) {
pe
->appendChild(pcd);
pcd.Release();
}

pXMLDom
->documentElement->appendChild(pe);
pe.Release();
}

// Create an element to hold three empty subelements.
pe=pXMLDom->createElement("node3");
if (pe != NULL)
{
// Add newline +tab for indentation.
pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t"));
IXMLDOMDocumentFragmentPtr pdf;
pdf 
= pXMLDom->createDocumentFragment();
pdf
->appendChild(pXMLDom->createTextNode("\n\t\t"));
pdf
->appendChild(pXMLDom->createElement("subNode1"));
pdf
->appendChild(pXMLDom->createTextNode("\n\t\t"));
pdf
->appendChild(pXMLDom->createElement("subNode2"));
pdf
->appendChild(pXMLDom->createTextNode("\n\t\t"));
pdf
->appendChild(pXMLDom->createElement("subNode3"));
pdf
->appendChild(pXMLDom->createTextNode("\n\t"));
pe
->appendChild(pdf);
pdf.Release();
pXMLDom
->documentElement->appendChild(pe);
pe.Release();
pXMLDom
->documentElement->appendChild(pXMLDom->createTextNode("\n"));
}

printf(
"Dynamically created DOM:\n%s\n",
(LPCSTR)pXMLDom
->xml);
hr 
= pXMLDom->save("dynaDom.xml");
if (FAILED(hr))
{
printf(
"Failed to save DOM to dynaDom.xml\n");
}

else
{
printf(
"DOM saved to dynamDom.xml\n");
}

if (pXMLDom) pXMLDom.Release();
CoUninitialize();
return 0;
}


結果:
Dynamically created DOM:
<?xml version="1.0"?>
<?xml-stylesheet type='text/xml' href='dom.xsl'?>
<!--sample xml file created using XML DOM object.-->
<root created="using dom">
<node1>some character data</node1>
<node2><![CDATA[<some mark-up text>]]></node2>
<node3>
<subNode1/>
<subNode2/>
<subNode3/>
</node3>
</root>
DOM saved to dynamDom.xml
-----------------------------
在此過程中,經常會有一些錯誤:保存文件的路徑,有的時候我寫絕對路徑,但是結果它卻還是保存到相對路徑,(為什么那?)還有里面的字符格式的轉化,比較復雜,哈哈!歡迎大家來討論:

哪位高手知道,關于保存路徑的具體的東西啊,反正我發現相對路徑有的時候并不總是相對你的原程序,當你打開文件處理在保存時,相對路徑是相對你程序打開的文件的路徑!



還有其他的嗎,該輪到你們拉:


posted on 2005-12-29 09:48 夢在天涯 閱讀(6362) 評論(8)  編輯 收藏 引用 所屬分類: CPlusPlusUML/XML

評論

# re: C++中DOM寫XML 2005-12-29 13:44 夢在天涯

為什么createelement(item)時,item不能是由數字轉換為的字符串!而且是有時可以有時不可,都發現好多次拉,難道時bug,還是英文版的緣故啊?  回復  更多評論   

# re: C++中DOM寫XML 2005-12-29 14:53 小明

我來回答你

1.路徑的問題
相對路徑都是相對于當前的path,可能是可執行程序所在路徑,跟源程序的路徑無關,這對于任何win32的程序都一樣

2.CreateElement為什么有時不能是數字?
因為xml的節點有些不能是數字
比如
<root>
<2>test</2>
</root>
不是有效的xml

<root>
<test>2</test>
</root>
就是有效的
  回復  更多評論   

# re: C++中DOM寫XML 2005-12-29 16:09 夢在天涯

恩,太感謝拉!牛!

為什么說有些節點不能是數字那?是所有的嗎?好像有的行啊!^_^!


哦,想起來拉,節點的命名首字母不能是()。。。。。。。^_^!~

但是element里的text,我們不用管它是中文還是英文,也不用管是身編碼嗎?只要我們在xml頭指定encoding=“”就可以了嗎?為什么有的時候加了encoding =“gb2312”,顯示仍然是亂麻那~???


謝謝!  回復  更多評論   

# re: C++中DOM寫XML 2006-01-20 13:50 flying

我的編譯通不過啊!!!
把IXMLDOMDocument3Ptr 改為IXMLDOMDocumentPtr能通過???
上面的例子就是SDK里面的吧!  回復  更多評論   

# re: C++中DOM寫XML 2006-01-20 15:22 flying

請助!
上面的代碼編譯不過,提示說IXMLDOMDocument3Ptr沒有定義!

在system32中沒有msxml4a.dll ,而msxml4.dll 和 msxml4r.dll有.
請問:是因為缺那個DLL造成編譯通不過的嗎?如果是,這么解決啊!

懇求大俠幫助!!!!!!  回復  更多評論   

# re: C++中DOM寫XML 2006-01-23 17:01 夢在天涯

是啊,要看你裝的MSXML的版本啊,有的要用3,有的不用啊!
好像是這樣啊!  回復  更多評論   

# re: C++中DOM寫XML 2006-02-08 20:50 夢在天涯

原程序對有些機器不能通過的原因:


應該把IXMLDOMDocument3Ptr中的3改為2!

還有雖然用了namespace MSXML2,但是還必須在每個用到的定義如IXMLDOMElementPtr 前加上MSXML2::,這樣便可以通過!



有知道為什么的嗎?


  回復  更多評論   

# re: C++中DOM寫XML 2007-12-27 20:35 chenfeifei

怎么用C++解析xml文件呢?需要對xml文件提取每個行字符 請求幫助。謝謝
QQ:313054332  回復  更多評論   

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1814986
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              亚洲欧美日本日韩| 亚洲精品综合| 国产在线高清精品| 欧美精品v日韩精品v国产精品 | 国产农村妇女精品一二区| 欧美aaaaaaaa牛牛影院| 老司机凹凸av亚洲导航| 亚洲综合色噜噜狠狠| 亚洲精品一区中文| 亚洲精品综合精品自拍| aa亚洲婷婷| 欧美一区二区三区精品 | 欧美激情精品久久久久久黑人| 久久精品国产亚洲aⅴ| 欧美风情在线观看| 久久久免费av| 国产精品视频大全| 国产日韩一区欧美| 亚洲精品日韩在线| 欧美一区二区三区在| 欧美肥婆bbw| 亚洲一区二区在| 久久一区中文字幕| 国产精品国产三级国产专播精品人 | 午夜精品视频在线观看| 噜噜噜躁狠狠躁狠狠精品视频 | 99这里只有久久精品视频| 午夜精品免费视频| 麻豆精品在线观看| 国产欧美在线播放| 一区二区三区免费网站| 欧美 日韩 国产 一区| 亚洲欧美三级在线| 亚洲人成小说网站色在线| 妖精成人www高清在线观看| 欧美在线观看天堂一区二区三区| 欧美福利影院| 日韩一区二区福利| 最新高清无码专区| 欧美精品一区三区| 亚洲精选中文字幕| 亚洲国产99| 欧美日韩国产91| 亚洲一区二区三区涩| 日韩视频久久| 国产拍揄自揄精品视频麻豆| 欧美亚洲一区二区在线观看| 亚洲欧美日韩国产综合| 国产精品亚洲成人| 久久久久久久性| 欧美高清在线视频| 亚洲一区二区免费看| 午夜在线电影亚洲一区| 在线观看欧美亚洲| 中文精品一区二区三区| 国产日韩欧美在线看| 欧美jizzhd精品欧美巨大免费| 久久免费视频一区| 亚洲午夜av电影| 久久久久欧美| 先锋影音国产一区| 欧美精品久久一区| 欧美成人精品福利| 国产欧美日韩一区| 日韩小视频在线观看专区| 狠狠色丁香婷婷综合影院| 久久久国产精品一区二区三区| 午夜精品久久久久久| 国产亚洲一区二区精品| 欧美暴力喷水在线| 一区二区三区视频在线看| 亚洲精品视频在线看| 亚洲伦理网站| 亚洲一区二区三区乱码aⅴ| 亚洲婷婷综合久久一本伊一区| 一级日韩一区在线观看| 久久精品国产免费| 在线观看日韩欧美| 麻豆久久婷婷| 在线欧美影院| 国产日韩欧美一区在线| 欧美电影免费观看高清| 亚洲欧美综合国产精品一区| 久久精品视频网| 欧美激情第三页| 久久精品国产免费看久久精品| 日韩性生活视频| 亚洲国产精品va| 国产亚洲亚洲| 国产日韩专区| 国产亚洲欧美日韩日本| 欧美婷婷六月丁香综合色| 免费在线观看成人av| 久久久九九九九| 蜜臀av性久久久久蜜臀aⅴ四虎 | 99国产欧美久久久精品| 国模私拍一区二区三区| 黄色成人精品网站| 在线观看日韩| 午夜激情亚洲| 亚洲三级影片| 日韩视频在线免费| 一本色道久久综合一区| 99国产精品自拍| 一区二区三区产品免费精品久久75 | 欧美激情视频免费观看| 欧美一区二区大片| 久久aⅴ国产紧身牛仔裤| 欧美一区二区大片| 99国产精品99久久久久久粉嫩| 久久九九全国免费精品观看| 一区二区三区中文在线观看| 免费的成人av| 久久久久国产精品麻豆ai换脸| 亚洲欧美99| 亚洲一区二区三区精品在线| 亚洲精品乱码久久久久久按摩观| 久久久xxx| 久久久中精品2020中文| 久久精品国产精品亚洲| 久久久久九九九| 老司机成人在线视频| 久久亚洲国产精品日日av夜夜| 午夜久久资源| 久久国产综合精品| 欧美视频在线播放| 欧美在线网址| 久久久久.com| 午夜视频在线观看一区二区三区| 一区二区三区欧美亚洲| 久久视频在线视频| 亚洲精品免费网站| 亚洲欧美日韩精品久久| 欧美日韩国产色综合一二三四 | 在线亚洲一区二区| 免费欧美在线视频| 国产日韩一区在线| 中文精品99久久国产香蕉| 老色鬼精品视频在线观看播放| 99综合在线| 久久国产加勒比精品无码| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产精品久久久久久久第一福利| 亚洲欧洲日夜超级视频| 亚洲国产精品毛片| 欧美va天堂在线| 亚洲欧美日韩直播| 玖玖精品视频| 欧美一区二区精品| 欧美巨乳在线观看| 99国产精品99久久久久久| 亚洲第一福利社区| 欧美高清视频免费观看| 一区二区高清视频| 亚洲国产小视频在线观看| 欧美日韩一二三区| 欧美在线你懂的| 麻豆成人在线播放| 美女网站久久| 欧美日韩精品二区第二页| 中文精品视频一区二区在线观看| 一本到12不卡视频在线dvd| 国产最新精品精品你懂的| 欧美三级在线| 亚洲视频电影图片偷拍一区| 久久久青草青青国产亚洲免观| 久久精品99国产精品| 亚洲一区在线视频| 亚洲精品国久久99热| 久久久久高清| 欧美不卡高清| 亚洲成在线观看| 浪潮色综合久久天堂| 欧美丰满少妇xxxbbb| 一区二区三区在线免费观看| 亚洲视频精品在线| 模特精品在线| 亚洲卡通欧美制服中文| 中国日韩欧美久久久久久久久| 99re热精品| 麻豆免费精品视频| 欧美一区二区三区久久精品茉莉花 | 亚洲欧美成人一区二区在线电影 | 久久亚洲春色中文字幕| 亚洲国产另类精品专区| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲国产精品久久| 久久aⅴ乱码一区二区三区| 亚洲精品视频免费| 国产欧美一区二区精品性色| 欧美高清视频一二三区| 欧美一区二区三区日韩视频| 最新日韩欧美| 老巨人导航500精品| 欧美一区二区三区免费视| 亚洲一区中文字幕在线观看| 亚洲欧洲午夜| 亚洲国产电影| 免费看av成人| 久久精品官网|