- ·上一篇文章:Asp.net中的页面乱码的问题
- ·下一篇文章:ASP.NET数据库编程快速入门之技术慨述(6)
在 .NET Framework 中表示 XML 的最佳做法
r.WriteElementString("name", "to");writer.WriteElementString("value", this.To);writer.WriteEndElement(); //标题 writer.WriteStartElement("header"); writer.WriteElementString("name", "from");writer.WriteElementString("value", this.From);writer.WriteEndElement(); //标题 writer.WriteStartElement("header"); writer.WriteElementString("name", "subject");writer.WriteElementString("value", this.Subject);writer.WriteEndElement(); //标题writer.WriteStartElement("header"); writer.WriteElementString("name", "sent");writer.WriteElementString("value", XmlConvert.ToString(this.Sent));writer.WriteEndElement(); //标题 writer.WriteEndElement(); //标题;writer.WriteStartElement("body"); writer.WriteRaw(this.Body);writer.WriteEndDocument(); //关闭所有打开的标记}
这段代码生成下面的 XML 文档
<email><headers> <header><name>收件人</name><value>michealb@example.org</value> </header> <header><name>发件人</name><value>dareo@example.com</value> </header> <header><name>主题</name><value>Hello World</value> </header> <header><name>发送时间</name><value>2004-03-05T15:54:13.5446771-08:00</value> </header></headers><body><p>Hello World 是我最喜欢的示例应用程序。</p></body></email>
只使用 XmlSerializer 的基本功能将不可能生成上面的 XML 文档。XmlWriter 的另一个优点是它可以从基本目标提取到数据要写入的目标,因此它可以是从磁盘上的文件到内存中的字符串(甚至是 XmlNodeWriter(英文)的 XmlDocument 称谓)的任何内容。
如果要求提供一种方式,使类可以更完全地参与到 XML 世界中(如与XPath 或 XSLT 等 XML 技术进行交互),则该类的最佳选择是实现 IXPathNavigable 接口,并为该类提供 XPathNavigator。这样做的一个示例是 ObjectXPathNavigator,它为那些使您可以在上述对象上执行 XPath 查询或运行 XSLT 转换的任意对象提供了 XML 视图。
准则 如果对象出于序列化目的要以 XML 来表示其自身,当其需要获得的 XML 序列化过程控制比 XmlSerializer 所提供的更多时,则应使用 XmlWriter。如果对象要以 XML 来表示其自身,以便能够完全以 XML 世界成员的身份参与到其中(如允许在此对象上进行 XPath 查询或 XSLT 转换),则此对象应实现 IXPathNavigable 接口。
返回页首
结论
在将来的 .NET Framework 版本中,将会更加强调基于光标的 XML API(如由 IXPathNavigable 接口公开的 XPathNavigator)。这类光标将成为与 .NET Framework 中的 XML 进行交互的主要机制。
Dare Obasanjo 是 Microsoft WebData 小组的成员,除其他事务外,该小组还开发了 .NET Framework 的 System.Xml 和 System.Data 命名空间、Microsoft XML 核心服务 (MSXML) 以及 Microsoft 数据访问组件 (MDAC) 中的组件。
有关本文的任何问题或评论,欢迎张贴到 GotDotNet 上的 Extreme XML 留言板。
做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。
这段代码生成下面的 XML 文档
<email><headers> <header><name>收件人</name><value>michealb@example.org</value> </header> <header><name>发件人</name><value>dareo@example.com</value> </header> <header><name>主题</name><value>Hello World</value> </header> <header><name>发送时间</name><value>2004-03-05T15:54:13.5446771-08:00</value> </header></headers><body><p>Hello World 是我最喜欢的示例应用程序。</p></body></email>
只使用 XmlSerializer 的基本功能将不可能生成上面的 XML 文档。XmlWriter 的另一个优点是它可以从基本目标提取到数据要写入的目标,因此它可以是从磁盘上的文件到内存中的字符串(甚至是 XmlNodeWriter(英文)的 XmlDocument 称谓)的任何内容。
如果要求提供一种方式,使类可以更完全地参与到 XML 世界中(如与XPath 或 XSLT 等 XML 技术进行交互),则该类的最佳选择是实现 IXPathNavigable 接口,并为该类提供 XPathNavigator。这样做的一个示例是 ObjectXPathNavigator,它为那些使您可以在上述对象上执行 XPath 查询或运行 XSLT 转换的任意对象提供了 XML 视图。
准则 如果对象出于序列化目的要以 XML 来表示其自身,当其需要获得的 XML 序列化过程控制比 XmlSerializer 所提供的更多时,则应使用 XmlWriter。如果对象要以 XML 来表示其自身,以便能够完全以 XML 世界成员的身份参与到其中(如允许在此对象上进行 XPath 查询或 XSLT 转换),则此对象应实现 IXPathNavigable 接口。
返回页首
结论
在将来的 .NET Framework 版本中,将会更加强调基于光标的 XML API(如由 IXPathNavigable 接口公开的 XPathNavigator)。这类光标将成为与 .NET Framework 中的 XML 进行交互的主要机制。
Dare Obasanjo 是 Microsoft WebData 小组的成员,除其他事务外,该小组还开发了 .NET Framework 的 System.Xml 和 System.Data 命名空间、Microsoft XML 核心服务 (MSXML) 以及 Microsoft 数据访问组件 (MDAC) 中的组件。
有关本文的任何问题或评论,欢迎张贴到 GotDotNet 上的 Extreme XML 留言板。
做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。
