使用XML数据结构或可以转换为XML的自定义数据结构是否更好?

时间:2009-03-13 19:55:04

标签: xml web-services language-agnostic

我将编写一个程序,其中包含一些使用XML来回传递数据的Web服务。 XML的格式是预定义的 - 我不能改变它以满足我的需要 - 但在代码中我可以按照我想要的任何方式处理数据。

我的问题:我是否更好地将代码中的数据结构作为XML树处理,或者将等效的数据结构编写为语言中的对象以及一些用于转换到XML的实用程序函数? / p>

我自己对这个问题有一些想法,但我不想无意中偏向任何人的答案。这是一个与语言无关的问题,但如果您有任何语言方面的考虑,我希望听到它。

编辑:为了澄清,XML格式本身是以逻辑方式设置的。语言中的对象与它没有太大差别。例如,它可能看起来像这样(这是一个糟糕的例子,但你得到了我希望的要点):

<car>
    <make>DATA</make>
    <model>DATA</model>
    <ownershipDates>
        <startDate>DATA</startDate>
        <endDate>DATA</endDate>
    </ownershipDates>
</car>

8 个答案:

答案 0 :(得分:1)

我会创建一个处理XML的对象。如果在处理数据结构时出错,可能会被编译器拾取。使用XML,您无法执行此操作。这样,如果xml发生了变化(不是在编程中那样做):),那么在XML结构和代码接口之间有一层抽象。在对象中更改它比在其余代码中更容易更改它。

答案 1 :(得分:1)

没有背景,很难说。但我猜你在使用本机数据结构时会更容易。如果XML模式发生了变化,或者您需要使用不同的格式,那么您可以将这些更改与程序的其余部分分离。

所以可能选择后一个选项:“将等效数据结构写为语言中的对象以及一些实用程序函数,以便与XML进行转换。”

答案 2 :(得分:1)

通常,XML用于数据互操作性和人类可读性。不加工速度或易于加工。为了处理您的数据,您可能会发现最好将其作为内部数据结构来处理。例如,在Python中,popular parsers将XML文档转换为内部Python结构,以便于处理和数据丰富,然后可以将其转换回XML。

如果您正在使用XML并且您的程序正在输出XML,您可能需要检查XSLT。一旦理解了语言,XML translation对于常见任务来说就简单得多了。

答案 3 :(得分:0)

这取决于数据。例如,如果数据在父/子关系中表示是有意义的,但为了报告/传输它已被展平,我很有可能重建数据结构(如果处理速度不是主要关注点)我没有截止日期。)

我通常更喜欢为这样的事情写课;我相信代码更容易理解。它确实取决于你正在做什么数据。

答案 4 :(得分:0)

这也取决于您正在使用的语言。在许多(但不是全部)语言中,有语言支持可以轻松地在XML和数据结构之间进行转换,因此您不需要编写大量转换代码。

例如,当我在C#中工作时,我尝试以内置XML序列化程序可以处理的方式设计我的XML和数据结构。

答案 5 :(得分:0)

尽管使用XML(例如DOM对象)作为数据模型很有诱惑力,但请记住“真实”对象(即实际使用类对数据建模)允许您拥有方法和复杂属性(对其他对象的引用)等等 - 而XML基本上只是POD。

如果您使用的语言具有良好的XML绑定方式,您可以享受这两个世界。您可以拥有一个包含丰富的面向对象类的真实对象模型,这些类也可以从XML进行序列化。

答案 6 :(得分:0)

编写一个序列化自身的数据对象

答案 7 :(得分:0)

后者:等效类加上读/写XML的代码。

这主要是因为您可以使用JAXB从Java Schema自动生成类和代码(假设Java - 所以这个答案是语言 - 党派)。您可以处理JAXB的对象,而不是处理XML。

OTOH,你的XML很好而且规则,因此DOM对象与你自己编写的对象非常相似。缺点是DOM API不使用任何特定语言的惯用数据结构,因此编写起来不太直观,维护可读性也差。幸运的是,对于大多数语言,还有其他类似DOM的工具,它们具有更自然的API语言。