[.net] 在传统com程序中使用xml
<p >xml是.net的核心。在所有有关.net的文章、白皮书或是帮助中总会有这三个字母。但在.net出现之前,xml已经深深的改变了一切,在“传统的”win32程序中你也可以发现它。这里,我将会介绍阅读和编写xml程序以及如何使用微软的MSXML4的com组件转化xml语言。<p >如果你没有安装MSXML4,你能够从以下链接获取:http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/766/msdncompositedoc.xml。遵循说明将它装到你开发要用的所有机器上。如果你计划分发你的MSXML4程序,你还需要获得分发用的cab文件。<p >如果你还不了解xml是什么,下面是一个xml的特点列表。xml是用以表示结构化和半结构化数据的符号:<p >1.是能读懂的简单明了的ASCII文本。<p >2.是易创建的ASCII文本;<p >3.在任何的语言和操作系统中,利用免费和可获得(通常是免费)的组件,行数不多的代码就可处理;<p >4.利用同样的组件,只需几行代码就可创建;<p >5.易被转化成html,pdf,ppt以及很多其它打印友好和显示友好的格式;<p >6.能够利用很多可获取的组件在几乎所有的数据库中来回移植和维护;<p >7.规则和条件尽可能的少,以获取最大实用性和灵活性。<p >如果你想知道更多,点击www.xml.org或是www.w3.org/XML/1999/XML-in-10-points了解相关细节。<p ><center><font color="#000099"><strong>xml样例</strong></font></center><p >下面是在样例程序中使用的一个xml样例文档:<p ><ccid_nobr><table align="center" border="1" bordercolordark="#FFFFFF" bordercolorlight="black" cellpadding="2" cellspacing="0" width="550"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt; &lt;PurchaseOrder&gt;&lt;Customer id=&quot;123&quot;/&gt;&lt;Item SKU=&quot;1234&quot; Price=&quot;4.56&quot; Quantity=&quot;1&quot;/&gt;&lt;Item SKU=&quot;1235&quot; Price=&quot;4.58&quot; Quantity=&quot;2&quot;/&gt;&lt;/PurchaseOrder&gt;</ccid_code></pre></td></tr></table></ccid_nobr><p ><center><font color="#000099"><strong>在com中加载xml</strong></font></center><p >最简单的使用xml的程序是一个控制台程序。在Visual Studio.NET中创建的过程如下:选择文件-〉新建-〉工程---〉vc++工程-〉win32程序。将程序的设置改为控制台程序。(使用vc++ 6的:选择文件-〉新建工程-〉win32程序。程序的设置改为控制台程序。你可以使用一样的代码)。我将我的文件命名为XMLCOM,因此my _tmain()函数保存在XMLCOM.cpp文件中。下面是它的内容:<p ><ccid_nobr><table align="center" border="1" bordercolordark="#FFFFFF" bordercolorlight="black" cellpadding="2" cellspacing="0" width="550"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>#include &quot;stdafx.h&quot;#import &quot;msxml4.dll&quot; using namespace MSXML2;#include &lt;iostream&gt;using std::cout;using std::endl;int _tmain(int argc, _TCHAR* argv[]){CoInitialize(NULL);{ //extra braces for scope only MSXML2::IXMLDOMDocumentPtr xmlDoc(&quot;MSXML2.DOMDocument.4.0&quot;); xmlDoc-&gt;async = false; bool ret = xmlDoc-&gt;load(&quot;sample.xml&quot;); if ( ret) { cout &lt;&lt; &quot;Document loaded ok.&quot; &lt;&lt; endl; } else { cout &lt;&lt; &quot;load problem&quot; &lt;&lt; endl; }}CoUninitialize();return 0;}</ccid_code></pre></td></tr></table></ccid_nobr><p align="center"><font color="FF0000" >1</font>2<span class="content01">下一页>></span></p></p>
页:
[1]