我已经看到null以多种方式表示的元素:
null
该元素存在于xsi:nil="true":
xsi:nil="true"
<book> <title>Beowulf</title> <author xsi:nil="true"/> </book>
该元素存在,但表示为一个空元素 (我认为这是错误的,因为“空”并且null在语义上是不同的):
<book> <title>Beowulf</title> <author/> </book> <!-- or: --> <book> <title>Beowulf</title> <author></author> </book>
返回的标记中根本不存在该元素 :
<book> <title>Beowulf</title> </book>
该元素有一个<null/>子元素:
<null/>
<book> <title>Beowulf</title> <author><null/></author> </book>
是否有正确或规范的方式来表示这样的null值?除了上面的例子还有其他方法吗?
上面示例的 XML 是人为设计的,所以不要读得太深。:)
xsi:nil 是表示值的正确方法:当发出 DOM 级别 2 调用 getElementValue() 时,返回 NULL 值。xsi:nil 也用于指示没有内容的有效元素,即使该元素的内容类型通常不允许空元素。
如果使用空标签,getElementValue() 将返回空字符串 (“”) 如果省略标签,则甚至不存在作者标签。这在语义上可能与将其设置为“nil”不同(例如,将“Series”设置为 nil 可能意味着该书不属于任何系列,而省略系列可能意味着该系列对于当前元素是不适用的元素。)
来自:W3C
XML Schema:Structures 引入了一种机制,用于表示一个元素在没有内容时应该被接受为“有效”,尽管内容类型不需要甚至不一定允许空内容。如果元素具有属性 xsi:nil 且值为 true,则它可能是没有内容的“有效”。如此标记的元素必须为空,但如果相应的复杂类型允许,则可以携带属性。
澄清: 如果您有一个 book xml 元素并且其中一个子元素是 book:series 您在填写它时有几个选项: