分类: C/C++
2008-04-14 23:27:49
作者:Kate Gregory 来源:赛迪网 | ||
| ||
我只是在测试block中加了这段编码。如果你需要将一个应用程序从COM和MSXML4转换为.NET,要注意到capitalization有很大不同,其功能仅仅是返回你所需要的值,而不是产生一个指针指向它们为你指定的目标。和我在这儿所做的一样,那样会使连接成串的指令变得更简单。由于Managed C++ 对类型比较挑剔,只好使用Double::Parse() 将串变成编号,并且在传递给WriteLine()之前汇总。 本程序运行时,会显示:
如果你想退出XML,只需要一行编码:
InnerXml 是String*,因此将其传递给WriteLine() 是没有问题的,不必要借助于任何中间变量。
在整个.NET体系中你将看到适用XML的多处地方。例如,你只要在申明中增加“可序列化”这一属性,任何一个类都可以把自己转换为 XML 或者从XML 转换回来。 下面以一个简单的类为例子,你可以把它转成为XML格式泵出,或者从XML格式输入赋值。
你为这个类加上可序列化(Serializable)标记。只有公开的变量才能这样序列化,而且这个类必须有一个隐含的构造函数。一旦满足了这些限制条件并且进行编译之后,事情就容易了。下面是怎样把这个对象卸出到文件中:
如果采用名字空间可以大大提高这段代码的可读性,但是这个例子是想展示和我所用的类所关联的完整的名字空间。第一行特别长,从头贯穿XML文件查找客户 (customer)标记,找到第一个后,查看它的标识(id) 属性,用它的值来构造采购单(PurchaseOrder)。然后,我创建了一个序列转换器和一个书写器,并且调用序列转换器的 serialize() 方法。输出的 po.xml 如下所示:
如果采购单是一个很大很复杂的类,可能是用.NET的某个收集类来保存一组事项,那我还是只需要这一小段代码把它按 XML格式输出:创建一个序列转换器和一个书写器,然后调用序列转换器的 serialize() 方法。从 XML 格式恢复对象时,顺序刚好相反:
如果你在ASP.NET或者Windows应用程序中使用数据网格(DataGrids),你可以从一个XML文件加载它们(很适合用来作快速演示),或者在你需要的时候,作为一种调试手段让它们把自己卸载到XML。只需简单地创建一个空的数据集(DataSet)对象,调用它的 Realxml() 方法来用一个文件中的 XML 填充它,然后把它作为你的数据网格的数据源去调用 DataBind() 方法。也可以用如下的方法从数据网格中取得 XML:
使用 .NET 类库你还可以用XML干很多的事。用一两行就可以产生 XML,从一种排放形式转换成另一种,或者是找到文档的某个子集。 利用Visual Studio中对于模式(schema)的支持,你可以生成一个匹配某个XML范例文件的模式,或者在编辑 XML时使用 Intellisense, 它知道你正在使用的模式, 当你打字输入时,随时提醒你当前允许使用的元素或者属性。XML处在.NET革命的心脏,所以你应该尽早了解它。 关于作者 Kate Gregory 是 Gregory Consulting Limited () 的创始人之一。 2002年一月,她被任命为MSDN在加拿大多伦多区的总监。她的 C++ 经验追溯到 Visual C++ 出现之前。在.NET, Visual Studio, XML, UML, C++, Java 和互联网等方面,她是各大学和微软活动中知名的演讲人和讲师。Kate 和她在Gregory Consulting的同事们擅长把软件开发和网站开发结合起来,创建生动的网站。她们生产高质量的通用的和定制的软件零件,用于网页和其他应用程序。 Kate 为 Que 写过很多书籍,包括“使用Visual C++ .NET 特辑”。 |