在阅读XML时,我应该尝试对对象进行建模(在OO意义上)还是将内容保留为XML实体?
我在尝试使用面向对象语言读取“强类型”(基于模式的)XML内容时,在两种方法之间做出决定:
首先,我将创建一个类型化的类层次结构,以表示该模式的所有可能元素类型及其类型属性和所有。然后,当我解析文档时,我将递归扫描每个节点并创建一个合适的类实例,再现所有嵌套,属性,子项(作为集合)等。然后,我可以在我的应用程序中操作此对象树保存时,我必须调用对象'toXml()
方法,或以某种方式将对象“转换”回XML格式。
使用一些现成的XML库(任何高级语言都有一个或多个),我会解析文档并将其结构已经存储在内存中。这意味着一个节点树。然后我会直接操作它们并使用库方法将所有内容保存回文件。此外,如果我的应用程序需要表示数据,我可以创建代理对象,其属性和方法实际上是指基础节点结构。
问题是:通常如何做?是否有一种“正确”的方式在XML和OO之间进行映射并返回?是否有一种众所周知的方式,OO应该使用XML,或者OO应该使用XML的方式?
答案 0 :(得分:1)
如果您使用XML作为对象的序列化格式,第一种方法是有意义的。在这种情况下,XML将包含创建对象结构的所有信息。对象和XML节点之间应该存在一对一的映射,并且每个对象都应该负责将自己转换为DOM数据和从DOM数据转换。
如果您的对象仅需要XML中的部分信息,则第二种方法会更好。另一个用例是遗留XML模式,可能存在设计缺陷,您不希望直接映射到对象结构。
顺便说一句,对于这两种方法,我建议使用现成的XML库。我不确定你为什么认为这只能用于第二个。
答案 1 :(得分:1)