XML 解析器和空值

本主题描述 XML 解析器如何处理显式空值。

XML 域在消息位流中没有空值的概念。在 XML 消息中没有导致在消息树中由 XML 解析器创建显式空值的字节序列。虽然解析器不创建带有显式空值的消息树字段,但您可以在消息流内对创建该格式字段的 ESQL 进行编码。

当 XML 解析器从消息树构造新的消息位流时,它会遇到显式空值且必须有能力处理它们。 在这种情况下,显式空值会视为“无字符要写入”,从而该字段作为空标记创建。

在 XML 域中,有几个值会导致在输出 XML 消息中写入 XML 空标记:

当这些已经作为空标记被写入到 XML 消息中时,如果随后解析了 XML 消息,则不可能区分这三种情况。当在 XML 中分析空标记时,则创建了没有值的 XML 消息树字段。这与包含显式空值的消息树字段不相同,与包含零长度字符串的消息树字段也不相同。

虽然在消息位流中,XML 解析器将这三种不同的消息树字段值解析为相同的结果,但是其他消息树操作可以区分它们。虽然 XML 解析器没有创建包含显式空值和零长度字符串的字段,但是能在消息流中执行操作。

因此,如果消息流要处理 XML 域中的消息,ESQL 或 Java 必须区别显式空值、零长度字符串以及没有值的消息树字段。在对 ESQL 进行编码以查询元素值时,即使包含显式空值的字段也不会被认为是空。

XML 写过程可处理这种情况,但 ESQL 中的其他操作未将其作为空值处理。XML 域没有空值的概念,并且解析器从不创建包含显式空值的字段。由于 XML 域是基于字符的域,当查询字段值时,它将结果作为字符字段返回。如果创建带有显式空值的 XML 消息树字段,这将不会被那些获取消息树字段值的 ESQL 例程视为空值。

返回的是字段内容的字符表示,在这种情况下为字符串“NULL”。例如,如果您用 IS NULL 进行此类比较,这从不会计算出 TRUE 值。如果复制这个消息树字段到另一个消息树,则字符串“NULL”会植入目标消息树字段。

相关概念
ESQL 概述
逻辑树结构
相关名
相关任务
设计消息流
正在开发 ESQL
开发 Java
使用消息体内容
处理 XML 域中的消息
相关参考
内置节点
XML 构造
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac00605_