企业网站开发价格,成都最专业做网站的,什邡市建设局门户网站,自己做网站能挣钱吗文章目录 第十二章 控制值的转换介绍处理特殊 XML 字符文字和 SOAP 编码格式的转义形式 示例防止泄漏的另一种方法 第十二章 控制值的转换
类和属性参数 ESCAPE CONTENT XMLTIMEZONE DISPLAYLIST VALUELIST XMLDEFAULTVALUE XMLLISTPARAMETER XMLSTREAMMODE
介绍
支… 文章目录 第十二章 控制值的转换介绍处理特殊 XML 字符文字和 SOAP 编码格式的转义形式 示例防止泄漏的另一种方法 第十二章 控制值的转换
类和属性参数 ESCAPE CONTENT XMLTIMEZONE DISPLAYLIST VALUELIST XMLDEFAULTVALUE XMLLISTPARAMETER XMLSTREAMMODE
介绍
支持 XML 的对象通常包括由 IRIS 数据类型定义的属性。每个数据类型类都定义 LogicalToXSD() 和 XSDToLogical() 方法。每当为对象请求 XML 输出时 IRIS XML 工具都会自动为每个属性调用 LogicalToXSD() 方法以将数据转换为在 XML 中使用的适当格式。同样每当使用 XML 文档作为输入时IRIS XML 工具都会调用 XSDToLogical() 方法将数据转换为 IRIS 的正确格式。
例如数据类型类的 %Binary 中LogicalToXSD() 方法使用 $SYSTEM.Encryption.Base64Encode() 方法转换出站值。同样XSDToLogical() 方法使用 $SYSTEM.Encryption.Base64Decode() 方法转换入站值。
IRIS 类还可以包含流值属性但流类不定义 LogicalToXSD() 和 XSDToLogical() 方法。相反当流类用作支持 XML 的类的属性时XML 工具会特别对待它们。具体来说
字符流的处理方式与字符串相同。默认情况下除了由于 XML 特殊字符的存在而需要进行的更改之外不会进行任何更改如下一节所述。当 IRIS 导出到 XML 时它会将二进制流属性转换为采用 Base-64 编码的字符串也就是说它以这种方式对数据进行编码然后将其导出。当 IRIS 从 XML 导入时它会执行相反的操作。
当使用支持 XML 的对象时有时需要考虑无法直映射影到 XML 的值或由于其他原因想要转换的值的特殊情况。
处理特殊 XML 字符
根据上下文当 IRIS XML 支持在字符串或字符流类型的属性中找到与符号 () 和某些其他字符时它会转义这些字符。
注意ESCAPE 属性参数控制哪些字符被识别为特殊字符。此参数是“XML”默认值或“HTML”文档中未讨论。
对于这些特殊字符可以通过设置 CONTENT 属性参数来控制转义的执行方式。文字格式和编码格式的详细信息有所不同如下所示
文字和 SOAP 编码格式的转义形式
Value of CONTENT (Case-insensitive) |XML Document in Literal Format| XML Document in SOAP-encoded Format —|—|— STRING (the default) |CData |CData ESCAPE| XML entity |XML entity ESCAPE-C14N| XML entity* |XML entity* MIXED |No escaping is done| CData
*对于“ESCAPE-C14N”转义是根据XML规范化标准完成的。主要区别在于回车符被转义为 #13
示例
Class ResearchXForms.CONTENT Extends (%RegisteredObject, %XML.Adaptor)
{Parameter XMLNAME Demo;Property String1 As %String;Property String2 As %String(CONTENT STRING);Property String3 As %String(CONTENT ESCAPE);Property String4 As %String(CONTENT MIXED);}String2 和 String1 始终以相同的方式处理因为 String2 使用 CONTENT 的默认值。
此类的文字 XML 输出可能如下所示
?xml version1.0 encodingUTF-8?
DemoString1![CDATA[value 1 value 2]]/String1String2![CDATA[value 1 value 2]]/String2String3value 1 amp; value 2/String3String4value 1 value 2/String4
/DemoSOAP 编码的 XML 输出将如下所示
?xml version1.0 encodingUTF-8?
CONTENT xmlns:SOAP-ENChttp://schemas.xmlsoap.org/soap/encoding/
xmlns:shttp://www.w3.org/2001/XMLSchema xmlns:xsihttp://www.w3.org/2001/XMLSchema-instanceString1![CDATA[value 1 value 2]]/String1String2![CDATA[value 1 value 2]]/String2String3value 1 amp; value 2/String3String4![CDATA[value 1 value 2]]/String4
/CONTENT防止泄漏的另一种方法
还有另一种方法可以防止特殊 XML 字符的转义。可以将该属性定义为特殊 XML 类型之一%XML.String、%XML.FileCharacterStream 或 %XML.GlobalCharacterStream。对于这些数据类型类CONTENT 为“MIXED”。