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

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)  編輯 收藏 引用 所屬分類: CPlusPlus 、UML/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

搜索

  •  

積分與排名

  • 積分 - 1814996
  • 排名 - 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>
              你懂的亚洲视频| 欧美日韩亚洲系列| 亚洲人成绝费网站色www| 欧美影院在线| 欧美在线视频导航| 久久网站免费| 亚洲国产精品久久| 99精品国产一区二区青青牛奶 | 亚洲第一在线综合在线| 91久久国产综合久久蜜月精品 | 国产精品国内视频| 国产精品久久久久久久久免费 | 欧美不卡视频一区| 亚洲免费观看| 欧美一区二区三区日韩视频| 久热这里只精品99re8久| 欧美日韩国产成人| 国产午夜精品麻豆| 亚洲黄色一区二区三区| 亚洲免费视频观看| 免费在线国产精品| 亚洲一级片在线看| 亚洲图片欧洲图片av| 欧美一区二区成人| 欧美国内亚洲| 欧美一区在线直播| 欧美视频日韩视频在线观看| 韩国av一区二区三区四区| 一区二区日韩精品| 免费不卡在线视频| 亚洲一二三区精品| 欧美激情一区二区三区在线视频观看 | 夜夜嗨av一区二区三区| 久久精品国产清自在天天线 | 久久一区欧美| 国产精品视频一二三| 亚洲人成免费| 久久性色av| 亚洲一区免费视频| 欧美精品在线免费| 亚洲国产精品一区制服丝袜| 久久精品国产99国产精品澳门| 亚洲区第一页| 久久久亚洲国产天美传媒修理工 | 亚洲福利视频一区| 久久精品免费观看| 国产农村妇女精品| 亚洲欧美成人| 在线亚洲+欧美+日本专区| 欧美另类69精品久久久久9999| 曰韩精品一区二区| 美女久久一区| 久久婷婷丁香| 黄色综合网站| 久久蜜桃精品| 久久精品亚洲热| 精品1区2区3区4区| 久久一区亚洲| 久久亚洲欧美国产精品乐播| 精品91在线| 久热成人在线视频| 久久99在线观看| 精品成人a区在线观看| 亚洲欧美中文在线视频| 夜夜爽av福利精品导航| 国产精品大片| 亚洲欧美日韩精品久久亚洲区| 中文亚洲视频在线| 国产欧美综合一区二区三区| 久久不见久久见免费视频1| 亚洲欧美999| 先锋影音一区二区三区| 国产日韩欧美视频在线| 久久久青草青青国产亚洲免观| 性欧美大战久久久久久久免费观看| 国产欧美日韩一区二区三区| 久久不射中文字幕| 老司机成人在线视频| 99国内精品久久久久久久软件| 一区二区三区产品免费精品久久75| 欧美日本高清| 久久se精品一区二区| 久久久久一本一区二区青青蜜月| 亚洲欧洲日韩综合二区| 一二三区精品| 国产在线麻豆精品观看| 亚洲国产精品久久久久秋霞不卡 | 亚洲国产老妈| 亚洲网站在线观看| 精品成人国产| 一本色道久久综合狠狠躁篇的优点| 国产精品美女www爽爽爽| 久久综合导航| 欧美日韩国产亚洲一区| 先锋影音久久久| 久久青青草综合| 日韩视频免费| 亚洲欧美中文日韩在线| 亚洲日本理论电影| 午夜精品久久久久久久男人的天堂| 欲色影视综合吧| 亚洲在线黄色| 亚洲狼人精品一区二区三区| 欧美一级视频一区二区| 日韩一二三区视频| 久久久高清一区二区三区| 亚洲一区二区精品在线| 久久久99久久精品女同性| 亚洲免费在线电影| 欧美韩日一区二区| 久久综合九色综合欧美狠狠| 国产精品人成在线观看免费| 欧美国产成人在线| 国语精品一区| 亚洲欧美综合精品久久成人| 一二三区精品福利视频| 久久综合婷婷| 久久人91精品久久久久久不卡| 国产精品ⅴa在线观看h| 亚洲黄色精品| 亚洲人成啪啪网站| 巨胸喷奶水www久久久免费动漫| 久久九九免费视频| 国产精品蜜臀在线观看| 一区二区高清在线| 亚洲视频在线二区| 欧美日韩综合不卡| 99re6这里只有精品| 亚洲视频高清| 欧美日韩专区| 亚洲天堂偷拍| 亚洲欧美成人网| 欧美午夜精品伦理| 亚洲欧美国产三级| 欧美亚洲成人网| 亚洲午夜羞羞片| 亚洲欧美日韩天堂| 国产精品亚洲激情| 欧美一区日本一区韩国一区| 欧美在线免费看| 国产亚洲永久域名| 久久国产精品久久久久久久久久 | 免费日韩视频| 亚洲高清影视| 一本色道久久精品| 国产精品成人播放| 亚洲欧美日韩一区二区在线 | 国内成人精品2018免费看| 亚洲欧美日韩国产成人精品影院| 性8sex亚洲区入口| 国内精品国产成人| 美国十次了思思久久精品导航| 欧美成人综合| 一本色道久久综合一区| 欧美天堂亚洲电影院在线观看 | 影音先锋亚洲视频| 美女免费视频一区| 亚洲美女淫视频| 午夜天堂精品久久久久| 激情欧美日韩一区| 欧美日本三区| 欧美一区二区三区免费观看视频| 免费看黄裸体一级大秀欧美| 日韩天堂在线视频| 国产精品午夜在线观看| 另类专区欧美制服同性| 99成人精品| 久久亚洲精选| 亚洲午夜精品17c| 国产综合色在线| 欧美精品三级在线观看| 欧美一区二区在线免费播放| 亚洲国产激情| 午夜在线一区二区| 亚洲激情视频在线播放| 国产精品香蕉在线观看| 欧美aaaaaaaa牛牛影院| 午夜精品久久| 亚洲精品欧美日韩| 老鸭窝毛片一区二区三区| 日韩亚洲一区二区| 韩国精品一区二区三区| 国产精品扒开腿做爽爽爽视频| 久久久久这里只有精品| 亚洲午夜久久久久久久久电影院| 欧美mv日韩mv国产网站| 久久国产精品第一页| 夜夜爽99久久国产综合精品女不卡| 国产在线播精品第三| 欧美婷婷久久| 欧美国产日韩二区| 久久久国产精品一区二区中文 | 欧美a级片一区| 亚洲欧美日本另类| 亚洲美女淫视频| 亚洲国产精品va在看黑人| 久久综合久久综合久久综合| 亚洲欧美日本日韩| 亚洲欧美日本国产专区一区| 91久久国产综合久久蜜月精品|