gpt4 book ai didi

XML 和 "flags"

转载 作者:行者123 更新时间:2023-12-02 04:13:17 24 4
gpt4 key购买 nike

在 XML 中对数字标志变量进行编码的“正确”方法是什么?

我正在转换一个在几个系统之间转储数据的程序。目前转储是一个制表符分隔值文件(制表符在此处显示为 ⟿):

blah de blah ⟿ blargh ⟿ 176 ⟿ ...

其中一个字段是代表源数据库中“标志”字的数字:

#define COURTEOUS     1             /* names changed to protect something */
#define KIND 2
#define FORGIVING 4
#define WITTY 8
#define OBSEQUIOUS 16
#define PURPLE 32
#define HAPPY 64
#define CLAIRVOYANT 128
#define WISE 256
...

有人表示,数字可能不是传输此信息的最便捷方式。我目前的想法是这样的:

<things>
<thing>
<name>blah de blah</name>
<owner>blargh</owner>
<flags value='176'>
<flag>OBSEQUIOUS</flag>
<flag>PURPLE</flag>
<flag>CLAIRVOYANT</flag>
</flags>
...
</thing>
...
</things>

这是一个明智的做法吗?有某种标准方法吗?这会是:

        <flags value='176'>
<OBSEQUIOUS/>
<PURPLE/>
<CLAIRVOYANT/>
</flags>

有进步吗?

谢谢!

最佳答案

我更喜欢使用标签来表示结构而不是内容,所以我更喜欢使用您的第一个选项

<flag>OBSEQUIOUS</flag>
<flag>PURPLE</flag>
<flag>CLAIRVOYANT</flag>

如果您使用 XML 架构,则可以使用枚举来验证标志字段的值是否在预定义集中。然后,该架构将充当 XML 格式用户的文档,使有效值变得明确(如果您在设计架构时确实知道所有可能的值)。

<xs:simpleType name='Beatle' >
<xs:restriction base='xs:string' >
<xs:enumeration value='OBSEQUIOUS' />
<xs:enumeration value='PURPLE' />
<xs:enumeration value='CLAIRVOYANT' />
</xs:restriction>
</xs:simpleType>

正如其他人评论的那样,没有充分的理由同时存储位数组值和标志本身。在某些情况下,您可以存储位数组值,例如,如果 XML 文件的大小必须尽可能小,或者出于性能原因。这会牺牲可读性和可移植性,因此只有在性能的折衷值得的情况下才应该这样做。

关于XML 和 "flags",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35303808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com