我看到null元素以几种方式表示:
元素存在于xsi:nil="true"**:** 中。
<book>
<title>Beowulf</title>
<author xsi:nil="true"/>
</book>元素存在,但表示为空元素(我认为这是错误的,因为‘null’和‘null’在语义上不同):
<book>
<title>Beowulf</title>
<author/>
</book>
<!-- or: -->
<book>
<title>Beowulf</title>
<author></author>
</book>元素在返回的标记中根本不存在
<book>
<title>Beowulf</title>
</book>元素具有一个<null/> 子元素(来自下面的TStamper ):
<book>
<title>Beowulf</title>
<author><null/></author>
</book>是否有一种正确或规范的方法来表示这样的null值?还有比上面的例子更多的方法吗?
上面示例的XML是人为设计的,所以不要读得太深。:)
发布于 2009-04-21 19:32:39
xsi:nil是表示值的正确方法,这样:当发出DOM级别2调用getElementValue()时,返回空值。xsi:nil也用于指示没有内容的有效元素,即使该元素内容类型通常不允许空元素。
如果使用空标记,则如果省略空字符串(""),getElementValue()将返回空字符串(“”),则甚至不存在author标记。这可能在语义上不同于将其设置为“0”(Ex )。将“系列”设置为“零”可能意味着这本书不属于任何系列,而省略系列可能意味着该系列对当前元素是不适用的元素。)
来自:The W3C
XML :Structure引入了一种机制,当元素没有内容时,它应该被接受为·有效值·,尽管内容类型不需要,甚至不一定允许空内容。如果一个元素的属性xsi:nil的值为true,则该元素可能是·有效值·不带内容。这样标记的元素必须为空,但如果相应的复杂类型允许,则可以携带属性。
澄清:
如果您有一个book xml元素,并且其中一个子元素是book:series,则在填写它时有几个选项:
发布于 2009-04-23 03:54:41
没有规范的答案,因为XML根本上没有空概念。但是,我假设您需要Xml/对象映射(因为对象图有空);因此,对您来说,答案是“不管您的工具使用什么”。如果你写处理,那就意味着你喜欢什么。对于使用XML的工具来说,xsi:nil是最好的选择。对于大多数映射器来说,省略匹配的元素/属性是实现它的方法。
发布于 2009-04-21 19:32:28
这取决于如何验证XML。如果使用XML验证,则表示null值的正确方法是使用xsi:nil属性。
[来源]
https://stackoverflow.com/questions/774192
复制相似问题