文章目录
- [第十五章 控制值的转换 - 控制导入流属性的行结尾](#第十五章 控制值的转换 - 控制导入流属性的行结尾)
- 指定默认日期/时间值
- [将非打印字符映射到` XML`](#将非打印字符映射到
XML
)
第十五章 控制值的转换 - 控制导入流属性的行结尾
对于作为字符流的每个属性,可以在从 XML
导入时控制流中的行结束符。为此,可以设置 XMLSTREAMMODE
属性参数,该参数可以具有以下值之一(不区分大小写):
- 如果
XMLSTREAMMODE
等于"block
"(默认值),则规范化XML
数据将原封不动地复制到流中。流的LineTerminator
属性设置为$CHAR(10)
,这使得导入与任何传统换行序列($CHAR(10)
、$CHAR(13)
、$CHAR(13,10)
)兼容。 - 如果
XMLSTREAMMODE
等于"line
",则XML
数据将被分成由流的LineTerminator
属性给定的字符分隔的行;%Library.AbstractStream
。
例如,假设我们有以下数据:
xml
...
<Stream1>
<![CDATA[this is a line
this is another line
this is another line
]]>
</Stream1>
...
我们将此数据导入到具有类型为 %Stream.GlobalCharacter
的 Stream1
属性的对象中。默认情况下,XMLSTREAMMODE
属性是"块"。当我们导入数据后,该属性将包含以下数据:
xml
this is a line
this is another line
this is another line
如果我们为此属性设置 XMLSTREAMMODE
等于"line
",并重新导入数据,则该属性将包含以下数据:
xml
this is a line
this is another line
this is another line
在这种情况下,行结束符由流类的 LineTerminator
属性确定。对于 %Stream.GlobalCharacter
,此属性等于 $char(13,10)
。
指定默认日期/时间值
对于%PosixTime
、 %TimeStamp
和 %DateTime
数据类型类,XMLDEFAULTVALUE
参数指定在日期未通过 $zdatetimeh
有效性检查时要使用的值。默认情况下,在这种情况下,将使用空字符串,这会在通过 XMLImport()
导入数据时导致错误。为该类指定一个有效值。
例如,对的 %TimeStamp
和 %DateTime
,请以 YYYY-MM-DD
HH:MM:SS.nnnnnnnnn
格式指定日期,从 1841
年之后的任意年份开始。例如:1841-01 -1 00:00:00
将非打印字符映射到 XML
XML
不允许非打印字符,特别是低于 ASCII 32
的字符(回车符、换行符和制表符除外)。
如果需要将某个属性映射到 XML
,并且该属性包含任何这些非打印字符,则该属性的类型必须是 %Binary
或的 %xsd.base64Binary
类型(这是等效的)。导出到 XML
时,该值会自动转换为 Base-64
编码(或导入时会自动从 Base-64
编码转换)。