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

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

搜索

  •  

積分與排名

  • 積分 - 1815122
  • 排名 - 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>
              亚洲国产精品成人va在线观看| 一本色道综合亚洲| 久久久噜噜噜久久中文字幕色伊伊| 一区二区三区|亚洲午夜| 亚洲欧洲三级电影| 91久久精品国产91久久性色tv| 欧美激情1区2区3区| 米奇777超碰欧美日韩亚洲| 免费不卡亚洲欧美| 91久久久在线| 中国成人亚色综合网站| 亚洲午夜激情网页| 先锋影音网一区二区| 久久激情综合网| 免费亚洲视频| 欧美午夜精品久久久久久孕妇| 欧美午夜视频| 国产婷婷97碰碰久久人人蜜臀| 伊人久久婷婷| 亚洲精品在线一区二区| 亚洲欧美国产不卡| 欧美 日韩 国产在线 | 国内精品久久久久伊人av| 国产一区观看| 日韩一区二区精品葵司在线| 亚洲一区二区三区在线| 久久久999| 日韩视频国产视频| 久久国产毛片| 欧美视频一区二区三区…| 国内精品久久久| 一本久久综合亚洲鲁鲁五月天| 午夜精品久久久| 欧美国产一区二区| 亚洲在线播放| 欧美精品一卡| 亚洲成色www8888| 欧美资源在线观看| 亚洲美女视频在线免费观看| 欧美一级一区| 欧美婷婷久久| 日韩视频亚洲视频| 美女免费视频一区| 亚洲欧美一区二区在线观看| 欧美极品aⅴ影院| 韩国三级电影久久久久久| 一区二区三区视频在线看| 久久综合999| 亚洲欧美另类中文字幕| 欧美日韩三区| 亚洲日韩视频| 欧美成人国产| 久久国产一区| 国产综合色在线视频区| 性欧美超级视频| 亚洲视频 欧洲视频| 欧美久久精品午夜青青大伊人| 国内精品模特av私拍在线观看| 亚洲欧美www| 一区二区三区精品在线| 欧美日韩蜜桃| 亚洲色在线视频| 欧美成人在线免费视频| 久久五月婷婷丁香社区| 国产一区欧美| 久久综合国产精品| 久久久久久久999| 一区在线播放视频| 老巨人导航500精品| 久久久久久久网| 亚洲成人在线视频播放| 欧美高清视频一区二区三区在线观看| 久久精品一区二区| 亚洲国内高清视频| 日韩视频在线一区| 国产精品初高中精品久久| 欧美一区二区三区的| 欧美亚洲免费| 亚洲国产老妈| 亚洲美女在线观看| 国产精品男女猛烈高潮激情| 久久国产欧美| 另类国产ts人妖高潮视频| 91久久亚洲| 夜夜嗨av一区二区三区四区| 国产精品毛片高清在线完整版| 久久成人在线| 欧美不卡高清| 亚洲免费影院| 久久久久久亚洲综合影院红桃| 亚洲国产一区二区在线| 亚洲裸体在线观看| 国产精品综合av一区二区国产馆| 久久久精品一区| 你懂的视频欧美| 亚洲专区一二三| 久久久久久久久久久一区 | 亚洲一二三区在线| 欧美一级淫片播放口| 亚洲人体一区| 亚洲欧美久久久久一区二区三区| 在线观看欧美亚洲| 一本色道久久综合狠狠躁篇怎么玩 | 欧美成人午夜免费视在线看片| 欧美激情片在线观看| 午夜精品视频| 美日韩在线观看| 香蕉乱码成人久久天堂爱免费 | 9i看片成人免费高清| 国产日韩欧美电影在线观看| 欧美成人在线网站| 国产精品一区二区久久国产| 欧美成熟视频| 国产丝袜美腿一区二区三区| 亚洲精品一级| 黄色小说综合网站| 亚洲午夜久久久久久尤物| 亚洲人成网站色ww在线| 欧美亚洲免费电影| 午夜精品剧场| 欧美午夜精品久久久| 亚洲国产精品日韩| 伊人成年综合电影网| 亚洲欧美卡通另类91av | 中日韩美女免费视频网址在线观看 | 欧美成在线视频| 国产情侣一区| 一区二区三区高清| 亚洲精品久久久蜜桃| 久久久精品网| 久久久久久黄| 国产欧美在线视频| 亚洲综合色网站| 午夜精品久久久久久久99热浪潮| 欧美精品一区在线发布| 亚洲二区在线| 最新中文字幕亚洲| 久久久久国产成人精品亚洲午夜| 欧美一级欧美一级在线播放| 欧美视频一区二区三区…| 99综合精品| 亚洲一区二区三区免费在线观看| 免费亚洲一区| 亚洲欧洲精品一区二区三区不卡| 亚洲国产精品嫩草影院| 久久视频在线视频| 久久综合久久久久88| 影音先锋久久精品| 欧美 日韩 国产在线 | 久久亚洲欧洲| 欧美国产视频在线| 日韩午夜剧场| 欧美日韩另类国产亚洲欧美一级| avtt综合网| 欧美亚洲视频在线观看| 国产日韩在线播放| 久久视频一区| 91久久线看在观草草青青| 一区二区三区国产在线观看| 欧美日韩欧美一区二区| 亚洲午夜激情网页| 另类av导航| 妖精成人www高清在线观看| 欧美午夜激情在线| 久久国产毛片| 亚洲另类视频| 欧美一区成人| 一区二区在线观看av| 欧美精品1区| 亚洲欧美成人综合| 欧美成年人视频网站| 亚洲无亚洲人成网站77777| 国产精品久久久久久久7电影| 欧美一区二区三区成人| 亚洲国产欧美一区二区三区丁香婷| 一区二区三区视频在线播放| 国产女人精品视频| 欧美激情一区二区三区蜜桃视频 | 亚洲精品免费在线播放| 午夜性色一区二区三区免费视频| 很黄很黄激情成人| 欧美日韩另类字幕中文| 久久精品成人一区二区三区| 亚洲欧洲日产国产网站| 久久国产精品第一页| 亚洲美洲欧洲综合国产一区| 国产精品揄拍500视频| 免费在线亚洲| 午夜精品一区二区三区在线| 亚洲盗摄视频| 久久久噜噜噜久久狠狠50岁| 中文日韩在线视频| 亚洲电影免费观看高清| 国产精品一区二区三区成人| 免费成人性网站| 久久精品卡一| 亚洲免费在线视频| 亚洲青色在线| 亚洲国产精品国自产拍av秋霞| 久久国产综合精品|