• 第十一章 将对象映射到 XML - 控制流属性的映射形式


    第十一章 将对象映射到 XML - 控制流属性的映射形式

    控制流属性的映射形式

    对于流属性,XMLPROJECTION 的选项如下:

    XMLPROJECTION 对流属性的影响

    Value of XMLPROJECTIONEffect on Stream Properties
    "ELEMENT"流内容包含在元素中。
    "WRAPPED"“ELEMENT”的处理方式相同。
    "CONTENT"流内容的映射如将属性映射为内容中所述。对于所有其他属性,`` 参数必须为“NONE”
    "NONE"该属性不会映射为 XML
    "ATTRIBUTE"该属性被映射为属性。
    "XMLATTRIBUTE"该属性被映射为带有前缀 xml 的属性。

    本节展示了如何映射流的示例。

    例如,考虑以下类:

    Class Basics.StreamPropDemo Extends (%Persistent, %XML.Adaptor)
    {
    
    Property BinStream As %Library.GlobalBinaryStream;
    
    Property CharStream As %Library.GlobalCharacterStream;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    下面显示了此类实例的 XML 表示形式的示例:

    <StreamPropDemo>
      <BinStream>/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP
    ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e
    ...
    VcE/wkZ5wGJBH/joP50UVfQkqaS5dbi34EZtpJgPRlUkf1H402Fy9oIWHHlPj2K/Nn9cfhRRSGip
    ZHzbmEPnEwZGGePu5/nj8qNJcpcrG4DxSuEkToDnPPtRRUyKGhPsuqlAxbypAhJ43A/y44q5HbNM
    vmx3U9vuJDLG+ASCQW+pxRRSKP/ZBinStream>
      <CharStream>CharStream>
    StreamPropDemo>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    控制预计属性的可用性

    可以指定每个映射属性是否由导入、导出或两者使用。为此,需要设置 XMLIO 参数,该参数控制 %XML.Writer%XML.Reader 的导出和导入方法如何处理属性。该参数可以采用以下值之一(不区分大小写):

    • “INOUT” — 此属性可供导出和导入使用。这是映射属性的默认值。
    • “IN” — 此属性由导入使用,但由导出忽略。
    • “OUT” — 此属性供导出使用,但在导入时会导致错误。如果在 XML 文档中找到与此属性对应的 XML 元素,则导入将返回错误。
    • “CALC” — 该属性由导出使用,但由导入忽略。如果在 XML 文档中找到与此属性对应的 XML 元素,则导入会忽略它。通常,这用于计算属性(其值基于其他属性的值),以便可以导出包含所有值的文档并在导入时忽略计算值。

    此参数对未映射到 XML 的属性没有影响。

    禁用映射

    如果某个类支持 XML,并且希望阻止该类被映射(可能在测试期间由于某种原因),可以将类参数 XMLENABLED 设置为 0。默认值为 1

    如果使用 XMLENABLED 来阻止映射某个类,则任何映射到 XML 的类都不能将该类用作属性。将 XMLENABLED 设置为 0 与从超类列表中在删除 %XML.Adaptor相同。

    %XML.Adapter 中的方法

    %XML.Adaptor 中的方法已弃用,并且大多没有记录。应该使用更强大的类 %XML.Writer%XML.SchemaO,它们为命名空间提供更好的支持。

  • 相关阅读:
    FlutterFair低代码开发实践
    springboot学生成绩分析系统 java ssm
    章鱼网络 Community Call #19|​开启与 Eigenlayer 的合作
    迅为IMX6开发板QT系统LVDS和HDMI双屏异显和同显
    如何实现设备组缓存的正确清除?——基于心跳请求和心跳响应的解决方案
    云服务器部署 Web 项目
    搜维尔科技:Touch触觉式力反馈设备与Touch X力反馈设备对比分析
    zookeeper整理:paxos算法学习
    EfficientPhys
    Linux之SELinux
  • 原文地址:https://blog.csdn.net/yaoxin521123/article/details/134523186