“更正”XML格式/树深度性能

时间:2011-10-12 16:29:51

标签: xml tree depth

我正在构建一个XML文件来保存渡轮的时间表以导入到Android应用程序中并开发了三种XML树结构,但是根据性能和/或正确的XML格式寻找使用哪种结构的意见。这三个结构在下面,最后它们将导入一个阵列,我将搜索下一个渡轮时间。

提前感谢您的帮助。

修改XML树 - 更好吗?

<FerrySchedule>
    <Terminal name="St. George">
        <Schedule day="Monday">
            <DepartureTime>00:00:00</DepartureTime>
            <DepartureTime>01:00:00</DepartureTime>
        </Schedule>
        <Schedule day="TuesdayFriday">
            <DepartureTime>00:00:00</DepartureTime>
            <DepartureTime>00:30:00</DepartureTime>
        </Schedule>
    </Terminal>

    <Terminal name="Whitehall">
        <Schedule day="Monday">
            <DepartureTime>00:30:00</DepartureTime>
            <DepartureTime>01:30:00</DepartureTime>

        </Schedule>
        <Schedule day="TuesdayFriday">
            <DepartureTime>00:00:00</DepartureTime>
            <DepartureTime>00:30:00</DepartureTime>
        </Schedule>
    </Terminal>
</FerrySchedule>

XML Tree 1:

<FerrySchedule>
    <Monday>
        <StGeorge>
            <time>0000</time>
            <time>0100</time>
        </StGeorge>
    </Monday>
</FerrySchedule>

XML Tree 2:

<FerrySchedule>
    <Monday>
        <boat depart="StGeorge">0000</boat>
        <boat depart="StGeorge">0100</boat>
    </Monday>
</FerrySchedule>

XML Tree 3:

<FerrySchedule>
    <Monday>
        <boat>
            <depart>St. George</depart>
            <time>0000</time>
        </boat>
        <boat>
            <depart>St. George</depart>
            <time>0100</time>
        </boat>
    </Monday>
</FerrySchedule>

1 个答案:

答案 0 :(得分:1)

我认为,性能差异不太可能影响您在这些设计之间的选择。但是,您还没有说过您的性能要求和约束,所以这只是猜测。

我认为应该影响设计的主要因素是人类读者的意义应该是不言而喻的,处理数据应该很容易,生成数据应该很容易。

我不喜欢“星期一”和“圣乔治”的元素名称。元素名称通常应该是类型,而不是实例。

我想我会压扁它:

<FerrySchedule>
        <boat depart="StGeorge" time="00:00:00" days="Mon"/>
        <boat depart="StGeorge" time="01:00:00" days="Mon Wed Fri"/>
</FerrySchedule>

如果我要对数据进行分组,我认为我更有可能按出发点而不是一周中的某一天对其进行分组,但我想不出有这种感觉的好理由,除了本周不同日期的安排可能是相似的。

在时间值中包含秒似乎有些荒谬,但XML Schema的“明智选择”的数据类型集包括xs:time in hh:mm:ss format,并且不包含hh:mm格式的任何内容。