0

当从另一个设备发送的信息中创建包含多个元素的 XML 文档时,假设某些信息未发送(例如 SecFile ID 信息),最好接收带有 (a) 元素不存在的此 XML , 或 (b) 空元素,或 (c) 插入元素或 (d) 插入属性 xsi:nil=”true”?

前所有信息

<FilmFile_ID>
<Film_ID>02</Film_ID>
<PriFile_ID>08</PriFile_ID>
<SecFile_ID>03</SecFile_ID>
</FilmFile_ID>

a)SecFile_ID 元素被移除

<FilmFile_ID>
<Film_ID>02</Film_ID>
<PriFile_ID>08</PriFile_ID>
</FilmFile_ID>

b)SecFile_ID 为空

<FilmFile_ID>
<Film_ID>02</Film_ID>
<PriFile_ID>08</PriFile_ID>
<SecFile_ID></SecFile_ID>
</FilmFile_ID>

c) 插入

<FilmFile_ID>
<Film_ID>02</Film_ID>
<PriFile_ID>08</PriFile_ID>
<SecFile_ID><null/></SecFile_ID>
</FilmFile_ID>

d)xsi:nil=”true” 插入

<FilmFile_ID>
<Film_ID>02</Film_ID>
<PriFile_ID>08</PriFile_ID>
<SecFile_ID xsi:nil=”true”/>
</FilmFile_ID>'
4

2 回答 2

0

好吧,没有“更好”的方法,但是,您仍然可以争辩说:

  • b) 是模棱两可的,因为您无法真正知道它是指值 还是不存在的值,并且

  • c) 在处理特殊数据类型时引入了不必要的复杂性,并且

  • d) 传达了与 a) 完全相同的意思,但更加冗长,因此

  • a) 获胜

如果您使用 a),则<SecFile></SecFile>, 如果应用程序(或模式)允许,则应将其解释为“空”值(非 null)。

于 2013-04-01T23:04:03.657 回答
0

一般来说,XML 文化是,作为文档设计者,您可以为特定语义选择使用什么语法,或者换句话说,文档意味着您所说的意思。如果您需要区分不同类型的缺失值(例如“John has no middle name”和“I don't know John's middle name”),那么区分可能很重要,但在大多数情况下,您可以非常愉快地使用其中任何一个. 使用空元素可能会使使用 XML 的应用程序更轻松一些。

于 2013-04-02T06:23:08.600 回答