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

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 夢在天涯 閱讀(6356) 評論(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

搜索

  •  

積分與排名

  • 積分 - 1813332
  • 排名 - 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>
              男女精品网站| 亚洲福利在线视频| 日韩网站在线观看| 黄色在线成人| 欧美屁股在线| 美女脱光内衣内裤视频久久影院| 亚洲电影第三页| 国产精品美女999| 麻豆久久婷婷| 久久伊人精品天天| 久久久久久高潮国产精品视| 欧美一区二区三区免费在线看| 一区二区高清视频在线观看| 一本久久a久久免费精品不卡| 亚洲精品资源美女情侣酒店| 日韩视频在线观看免费| 日韩一区二区精品葵司在线| 一区二区三区日韩| 亚洲在线视频观看| 午夜免费在线观看精品视频| 欧美诱惑福利视频| 久久午夜精品| 男人插女人欧美| 老司机午夜免费精品视频| 免费不卡在线观看av| 欧美激情亚洲国产| 欧美午夜国产| 国产精品高潮久久| 欧美日韩精品一区二区在线播放 | 久久精品91| 亚洲综合第一页| 午夜在线视频一区二区区别 | 国产精品美女午夜av| 久久婷婷亚洲| 亚洲午夜在线视频| 亚洲欧美日韩国产一区二区| 久久精品国产第一区二区三区| 久久久久久亚洲精品杨幂换脸| 久久免费视频这里只有精品| 欧美日韩国产免费| 国产精品红桃| 激情欧美丁香| 一区二区三区黄色| 久久精品国产久精国产思思| 欧美成人免费网站| 一区二区三区欧美视频| 久久爱www久久做| 蜜臀va亚洲va欧美va天堂| 另类人畜视频在线| 国产精品三区www17con| 亚洲电影免费在线观看| 亚洲欧美国产精品桃花| 老司机精品久久| 99精品视频免费观看| 久久精品亚洲一区二区三区浴池| 欧美精品在线观看播放| 精品成人在线视频| 午夜精品国产更新| 亚洲国产欧美在线人成| 欧美sm视频| 亚洲午夜三级在线| 欧美精品一区二区在线播放| 国产自产在线视频一区| 午夜日韩在线| 亚洲三级电影在线观看| 久久午夜视频| 国产精品亚发布| 99精品视频免费| 亚洲男人的天堂在线aⅴ视频| 亚洲福利在线看| 久久久999| 国产欧美日韩一区二区三区在线观看 | 欧美视频二区36p| 欧美成人免费全部观看天天性色| 国产一区美女| 午夜日韩电影| 夜夜嗨av一区二区三区| 欧美二区在线播放| 亚洲区在线播放| 久久亚洲高清| 欧美一区二区视频免费观看| 国产伦精品一区二区三区视频黑人 | 欧美黑人一区二区三区| 欧美一区影院| 国产情侣久久| 欧美尤物巨大精品爽| 亚洲主播在线| 国产精品欧美日韩久久| 性一交一乱一区二区洋洋av| 亚洲一区bb| 国产精品久久久久9999高清| 一区二区激情视频| av成人免费| 国产精品久久久久免费a∨大胸| 亚洲特级毛片| 亚洲另类在线一区| 久久综合网络一区二区| 亚洲激情小视频| 欧美激情成人在线视频| 欧美多人爱爱视频网站| 在线成人www免费观看视频| 免费成人你懂的| 久久亚洲综合色| 亚洲三级色网| 日韩午夜激情| 国产精品一区在线观看你懂的| 久久岛国电影| 久久中文字幕一区二区三区| 日韩午夜免费视频| 亚洲一级特黄| 极品av少妇一区二区| 亚洲视频中文字幕| 亚洲欧美日韩精品久久久| 激情国产一区二区| 亚洲欧洲三级| 国产久一道中文一区| 欧美91视频| 欧美日韩综合在线| 久久久水蜜桃av免费网站| 欧美高清在线播放| 欧美一区亚洲二区| 欧美/亚洲一区| 国产精品99久久久久久久女警| 午夜精品久久久久影视| 日韩视频精品在线| 久久成人免费日本黄色| 亚洲精品久久久一区二区三区| 欧美激情一区二区三区| 国产精品中文字幕在线观看| 欧美激情第三页| 国产乱理伦片在线观看夜一区| 欧美大尺度在线| 欧美成人免费小视频| 久久精品国产欧美激情| 欧美日韩免费网站| 免费日韩视频| 国产精品日韩一区二区三区| 最新国产乱人伦偷精品免费网站| 国产亚洲一区精品| 亚洲午夜激情网站| 亚洲最快最全在线视频| 可以免费看不卡的av网站| 久久九九久久九九| 欧美系列一区| 亚洲激情校园春色| 1024成人网色www| 亚洲综合色丁香婷婷六月图片| 一区二区成人精品 | 久久久久99| 欧美日韩国产美| 久热精品视频| 国产午夜精品全部视频在线播放| 毛片av中文字幕一区二区| 国产精品免费网站| 99热这里只有精品8| aa国产精品| 嫩草成人www欧美| 猫咪成人在线观看| 一区在线免费观看| 欧美在线你懂的| 99re6热在线精品视频播放速度| 久热国产精品| 免费欧美视频| 一区精品久久| 久久精品一区二区三区中文字幕| 久久精品国产99精品国产亚洲性色| 国产精品欧美在线| 亚洲自拍偷拍视频| 久久精品国产69国产精品亚洲| 国产日韩一区在线| 久久久久久久性| 老司机aⅴ在线精品导航| 亚洲大胆人体在线| 蜜臀av在线播放一区二区三区 | 国产精品成人一区二区艾草| 99精品国产高清一区二区| 久久久精品网| 亚洲国产欧美一区| 美女日韩欧美| 亚洲国产日韩美| 亚洲卡通欧美制服中文| 欧美日韩一区二区三区在线观看免| 99精品欧美一区二区蜜桃免费| 亚洲激情视频网站| 欧美日韩免费一区二区三区视频| 亚洲五月六月| 久久国产精品色婷婷| 国产精品亚洲综合天堂夜夜 | 狠狠色噜噜狠狠色综合久| 欧美一级黄色录像| 美玉足脚交一区二区三区图片| 亚洲日韩欧美视频一区| 国产精品久久久| 久久不射中文字幕| 91久久精品国产91久久性色tv| 亚洲影视综合| 国产一区二区三区久久悠悠色av| 欧美a一区二区| 亚洲午夜91| 嫩草影视亚洲|