在 .net framework 中表示 xml 的最佳做法
发布日期: 8/25/2004 | 更新日期: 8/25/2004dare obasanjo 【程序编程相关:导致缓冲区溢出的常见 C 和 C++ 错】
【推荐阅读:Windows系统下升级PHP的MySQ】摘要:dare obasanjo 着眼于可用来表示在单个进程与 appdomain 内的组件之间共享的.基于 xml 的数据的选项,并讨论了每种方法在设计上的利弊. 【扩展信息:Smashing The Stack F】
microsoft corporation
引言
在最近的一次设计审查之后,一名职位是项目经理的同事询问在 api 中公开 xml 时是否存在设计准则,因为他曾经看到过许多不同的方法,但是无法确定该选择何种方法.我告诉他,我原来相信在 msdn 上可以找到一些准则,但是当我查阅时却只找到一段标题为 passing xml data inside the clr(英文)的 msdn tv,其中虽然包含此类信息,但却不容易阅读.因此我萌发了这样一个念头,即为 don box 的 msdn tv 片段提供一个便于打印的版本,并提供我本人在 microsoft 处理 xml api 方面的一些经验.
返回页首准则初探
在三种主要情况下,开发人员需要考虑使用何种 api 来表示 xml.下面简要介绍一下这些情况与准则:
•类的字段或属性中包含 xml:如果类的字段或属性是 xml 文档或片段,则该类应提供将其属性同时作为字符串与 xmlreader 进行操作的机制.
•方法可以接受 xml 输入或返回 xml 作为输出:可以接受或返回 xml 的方法应有助于返回 xmlreader 或 xpathnavigator,除非用户希望能够编辑 xml 数据(此时应使用 xmldocument).
•将对象转换成 xml:如果对象出于序列化目的要以 xml 来表示其自身,当其需要获得的 xml 序列化进程控制比 xmlserializer 所提供的更多时,则应使用 xmlwriter.如果对象要以 xml 来表示其自身,以便能够完全以 xml 世界成员的身份参与到其中(如允许在此对象上进行 xpath 查询或 xslt 转换),则此对象应实现 ixpathnavigable 接口.
在下面各部分中,我详细介绍了上面提到的几种情况,并解释了我是如何获得这些准则的.
返回页首常见疑点
当您决定使用方法或属性接受或返回 xml 时,您的大脑中会出现 .net framework 中的许多类,它们都适用于此任务.下面列出了 .net framework 中最适合于表示 xml 输入或输出的五个类,并且给出了其正反两方面的简要说明.
1.
system.xml.xmlreader(英文):xmlreader 是 .net framework 的拉模型 xml 分析程序.在拉模型处理过程中,xml 用户通过根据需要从 xml 制造者那里请求事件来控制程序流.拉模型 xml 分析程序(如 xmlreader)以只进的流方式进行操作,同时只显示单个节点在任意给定时间的相关信息.事实上,xmlreader 不需要整个 xml 文档加载到内存并且是只读的,这使其成为以非 xml 数据源创建 xml 外观的一个不错选择.这种以非 xml 数据源创建 xml 外观的一个示例是 xmlcsvreader(英文).有人可能将 xmlreader 的只进特性视为一种局限性,因为它使用户无法通过 xml 文档的各个部分进行多次传递.... 下一页