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

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

搜索

  •  

積分與排名

  • 積分 - 1815128
  • 排名 - 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>
              久久国产精品72免费观看| 韩国精品在线观看| 国产精品一区在线播放| 在线看日韩av| 欧美一区二区三区四区在线观看| 欧美va天堂在线| 午夜精品国产精品大乳美女| 欧美精品一区二区三区久久久竹菊| 国产欧美精品在线| 亚洲天堂视频在线观看| 欧美成人嫩草网站| 午夜精品久久99蜜桃的功能介绍| 国产精品一卡二卡| 快射av在线播放一区| 亚洲一区二区成人在线观看| 欧美黄在线观看| 亚洲第一综合天堂另类专| 亚洲国内欧美| 欧美成人在线免费观看| 欧美成人亚洲成人日韩成人| 一区二区三区无毛| 久久精品av麻豆的观看方式| 一本色道久久88精品综合| 欧美成人资源| 久久国产精品99久久久久久老狼 | 在线欧美亚洲| 日韩性生活视频| 欧美日本中文| 一区在线免费观看| 99热精品在线| 欧美日韩一区二区欧美激情| 日韩视频免费观看高清完整版| 久色成人在线| 欧美日韩中文| 亚洲欧美在线高清| 午夜国产精品视频| 亚洲免费黄色| 久久久久国产精品一区| 在线观看日韩av先锋影音电影院| 久热精品视频在线观看一区| 欧美视频一区二区在线观看| 免费观看一级特黄欧美大片| 久久亚洲精品网站| 亚洲日本免费| 一本色道久久综合亚洲二区三区| 国产在线精品自拍| 欧美大片免费久久精品三p| 国产精品大全| 久久综合网hezyo| 国产精品一区二区在线观看不卡 | 欧美电影在线观看| 国产亚洲精品激情久久| 狂野欧美激情性xxxx欧美| 国产精品日产欧美久久久久| 久久国产精品免费一区| 欧美吻胸吃奶大尺度电影| 久久成人综合网| 国产精品黄视频| 一本色道久久88综合亚洲精品ⅰ| 亚洲国产成人久久综合| 日韩一二在线观看| 9l视频自拍蝌蚪9l视频成人| 亚洲在线不卡| 亚洲欧美色一区| 国产精品欧美久久| 欧美大片免费久久精品三p| 好吊色欧美一区二区三区视频| 午夜亚洲性色福利视频| 99精品视频网| 久久精品国产清自在天天线| 日韩视频一区二区| 欧美精品在线免费| 日韩午夜av| 亚洲免费视频观看| 免费在线观看精品| 久久精品人人做人人爽| 国产日韩欧美成人| 一区二区三区欧美日韩| 亚洲一区在线播放| 欧美电影打屁股sp| 日韩网站在线| 性视频1819p久久| 欧美日韩国产区一| 亚洲一区欧美| 久久免费精品视频| 国产欧美日韩| 久久综合九色综合网站| 久久久久久亚洲精品中文字幕| 国产中文一区二区三区| 久久综合中文| 亚洲欧洲一区二区三区久久| 在线免费日韩片| 欧美另类视频在线| 亚洲欧美另类综合偷拍| 亚洲小视频在线| 欧美噜噜久久久xxx| 亚洲一区欧美激情| 欧美成人第一页| 亚洲欧美日韩精品久久奇米色影视 | 狠狠88综合久久久久综合网| 久久久久久久综合| 欧美国产三级| 亚洲福利视频一区二区| 欧美日韩国产精品专区| 小嫩嫩精品导航| 亚洲国产欧洲综合997久久| 亚洲欧美大片| 亚洲精品国产精品国产自| 国产精品久久久久久影视 | 欧美一区三区三区高中清蜜桃| 亚洲一区二区欧美| 伊人久久大香线蕉综合热线| 欧美日韩一区在线观看| 久久综合国产精品| 亚洲欧美三级在线| 亚洲另类黄色| 欧美亚洲免费| 亚洲精品国产日韩| 激情文学一区| 国产亚洲精品高潮| 国产精品久久福利| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲一区二区三区精品在线| 亚洲国内高清视频| 男女av一区三区二区色多| 久久本道综合色狠狠五月| 亚洲午夜av| 99国产精品自拍| 最新中文字幕一区二区三区| 欧美日韩在线观看视频| 欧美77777| 久久亚洲一区| 久久免费精品视频| 久久久精品动漫| 日韩一级裸体免费视频| 亚洲激情影视| 最近中文字幕mv在线一区二区三区四区 | 亚洲精品国产精品国自产在线 | 国内精品一区二区三区| 国产精品午夜在线| 国产精品色一区二区三区| 欧美三级乱码| 国产精品高潮视频| 国产精品扒开腿做爽爽爽软件 | 欧美日韩午夜在线| 欧美日韩国产综合一区二区| 免费观看亚洲视频大全| 欧美成人在线影院| 欧美日韩高清在线播放| 欧美日韩精品综合| 欧美亚州一区二区三区| 国产精品日韩在线播放| 国产区精品在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 国产精品三区www17con| 国产偷自视频区视频一区二区| 国产精品亚洲美女av网站| 国产一级精品aaaaa看| 好吊色欧美一区二区三区四区| 一区精品在线播放| 亚洲美女91| 亚洲欧美国产精品桃花| 久久久久久精| 亚洲欧美一区二区三区久久| 欧美在现视频| 欧美mv日韩mv国产网站| 亚洲人在线视频| 亚洲欧美日韩天堂| 久久天天躁狠狠躁夜夜爽蜜月| 美女视频网站黄色亚洲| 久久精品欧美日韩| 欧美成人综合在线| 国产精品乱码久久久久久| 黄色精品网站| 正在播放欧美一区| 在线视频你懂得一区| 欧美在线视频在线播放完整版免费观看| 久久欧美肥婆一二区| 亚洲电影免费观看高清| 亚洲成人在线视频播放| 久久久国产精彩视频美女艺术照福利| 看片网站欧美日韩| 99精品国产热久久91蜜凸| 久久精品首页| 欧美日韩一区国产| 亚洲电影一级黄| 亚洲欧美精品在线| 亚洲大胆人体视频| 午夜精品国产| 欧美日韩亚洲高清| 亚洲国产一区二区三区在线播| 在线观看91久久久久久| 亚洲一卡二卡三卡四卡五卡| 牛夜精品久久久久久久99黑人 | 免费欧美日韩| 午夜精品一区二区三区电影天堂| 欧美插天视频在线播放| 红杏aⅴ成人免费视频| 午夜精品久久久久久久白皮肤| 亚洲国产精品激情在线观看|