用VisualC .NET实现XML解析
2008-04-09 04:09:11来源:互联网 阅读 ()
对于多数开发者来说,Web服务已经成为某种固定不变的东西了,因为他们把Internet看作是促进应用程序应用的最好途径。一些Web服务(例如Amazon.com Web服务)是公共的,并且很容易被要求把这种服务包含在应用程序中。其它一些Web服务是私有的,并且需要访问的特定知识。无论涉及哪种Web服务,他们都依赖XML传递数据。因此,在提到Web服务的时候,XML解析是开发者想到的第一件事。
XML解析的其它用途
XML解析并不仅仅局限于Web服务,例如.NET应用程序就能使用XML作为配置信息的存储方法。你需要做的事情就是拥有一个.MANIFEST文件,它的名称必须与应用程序的名称相同,CLR(通用语言运行时)会自动查阅这个文件找到配置信息。
例如,列表1显示了添加给一个.MANIFEST文件的XML。这个清单告诉CLR使用Windows XP主题信息绘制标准控件(该配置文件不会影响自己绘制的控件)。注意该文件的版本号可能改变,可以在系统的\WINDOWS\WinSxS文件夹下查看当前的版本号。这个并行库的文件夹的名称可能类似x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.0.0_x-ww_1382d70a,列表1中显示的processorArchitecture值最先出现,接着出现名称(name)值,然后出现publicKeyToken值,最后出现版本(version)值。
列表1..NET.MANIFEST文件依赖XML
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32"
name="ShowMessage"
version="1.0.0.0"
processorArchitecture="x86"
/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
你也可以建立其它类型的配置文件,你的应用程序可以在启动过程中分析它。这些文件可以包含应用程序执行需要的任何信息。你可以使用这些配置文件代替注册表设置项。通常,你会发现使用XML文件比使用注册表少一些错误,并且它们也更灵活。例如,把一个用户从一台计算机迁移到另一台计算机的时候,就不一定需要重新配置应用程序,因为设置信息已经出现在该应用程序的目录中了。在某些角度上,这意味着我们又回到了过去使用INI文件的情形,但是XML文件包含的信息比INI文件多得多,并且会减少一定形式的损坏和配置错误。
当结合其它一些技术(例如可扩充样式表语言转换,XSLT)的时候,XML可以使Web页面更容易阅读。但是,你也能把这类技术应用于内部。例如,很多公司把这种形式的XML作为建立用户使用的帮助文件的一种方法。这种帮助信息作为XML文件中的数据出现,浏览器可以使用XSLT文件把它转换为可视化的输出。应用程序可以使用兼容HTML的控件显示这种信息。至于用户,他们不管数据来自标准的帮助文件或另一个信息源。
最终,XML可能成为一种主要的数据存储技术。有些厂商已经讨论他们的XML产品了。你也可以找到一些XML存储产品,例如微软Office。简单的说,你最终可能发现为了载入数据和显示数据,需要在应用程序中包含分析能力。
生成XML文件
在你能更多地处理XML之前,你需要了解如何格式化XML文件,以及如果生成它。我假定你已经知道了如何格式化XML文件。列表2显示了生成XML的一个简单的方法。
列表2.使用.NET生成XML文件
System::Void btnGenerate_Click(System::Object * sender,
System::EventArgs * e)
{
XmlTextWriter* DataWrite; // 执行实际的数据写入
// 建立数据写入程序
DataWrite = new XmlTextWriter(txtFilename->Text,
System::Text::Encoding::UTF8);
// 写入XML头。当你把这个函数设置为true的时候,.NET建立独立的文档
DataWrite->WriteStartDocument(true);
DataWrite->WriteWhitespace("\r\n");
// 描述测试文件
DataWrite->WriteComment("This is a test document.");
DataWrite->WriteWhitespace("\r\n");
// 启动文档。你必须指定true来建立一个有根元素的新文档。
// 包含根元素失败将导致一个错误产生。
// 本示例包含了一个名字空间前缀、元素的本地名称和于名字空间关联的URL。
DataWrite->WriteStartElement("Data",
"MyData",
"http://www.mysite.com/");
DataWrite->WriteWhitespace("\r\n");
// 把数据写入文档
DataWrite->WriteElementString("DataString1", txtData->Text);
DataWrite->WriteWhitespace("\r\n");
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:用VisualC 设计窗体探测器
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash