美文网首页
第三十八章 其他特殊主题

第三十八章 其他特殊主题

作者: Cache技术分享 | 来源:发表于2023-12-17 08:58 被阅读0次

    第三十八章 其他特殊主题

    类和属性参数

    • XMLNAME
    • XMLSEQUENCE
    • XMLUNSWIZZLE
    • XMLPREFIX
    • XMLIGNOREINVALIDTAG
    • XMLIGNOREINVALIDATTRIBUTE

    控制元素的关闭

    XML 中,仅包含属性的元素可以用以下任一方式表示:

    <tag attribute="value" attribute="value" attribute="value"></tag>
    <tag attribute="value" attribute="value" attribute="value"/>
    

    IRIS 认为这些形式是等效的。当使用 %XML.Writer 导出对象时,可以控制关闭形式,但不能通过修改 XML 投影本身来控制。

    处理具有多个同名标签的文档

    XML 中的给定元素可以包含多个具有相同名称的元素;这些元素通过它们的顺序彼此区分。例如,以下是一个合法的 XML 文档:

    <?xml version="1.0" encoding="UTF-8"?>
    <Root>
       <Person>
          <Name>Able, Andrew</Name>
          <DOB>1977-10-06</DOB>
          <Address>
             <Street>6218 Clinton Drive</Street>
             <City>Reston</City>
             <State>TN</State>
             <Zip>87639</Zip>
          </Address>
          <Address>
             <Street>110 High Street</Street>
             <City>Zanesville</City>
             <State>OR</State>
             <Zip>80719</Zip>
          </Address>
       </Person>
    </Root>
    

    将这样的文档映射到 IRIS 类有点棘手,因为每个类属性都必须有唯一的名称。

    要将此类文档映射到 IRIS 类,请执行以下操作:

    • 根据需要设置 XMLNAME 属性参数,以将不同的类属性映射到相同的 XML 名称。
    • XMLSEQUENCE 类参数设置为 1。作为预防措施,这可确保映射遵循类定义中列出的属性顺序。
    • 确保类定义中列出的属性的顺序与 XML 文档中的顺序相同。

    例如,考虑以下类定义:

    Class GXML.TestSequence.Person Extends (%Persistent, %XML.Adaptor)
    {
    
    Property Name As %Name [ Required ];
    Property DOB As %Date(FORMAT = 5, MAXVAL = "+$h") [ Required ];
    Property HomeAddress As GXML.TestSequence.Address(XMLNAME = "Address");
    Property WorkAddress As GXML.TestSequence.Address(XMLNAME = "Address");
    
    /// If the XMLSEQUENCE = 1, then the order of the XML elements must match the 
    /// order of the class properties.  This allows us to deal with XML where the 
    /// same field appears multiple times and is distinguished by the order.
    Parameter XMLSEQUENCE = 1;
    
    }
    

    该类定义映射到前面显示的 XML 文档。

    注意:如果 XMLSEQUENCE1,则忽略 XMLIGNOREINVALIDTAG 参数。

    导出后控制 Unswizzling

    当使用 IRIS XML 工具导出支持 XML 的持久对象时,系统会像往常一样自动将所有需要的信息混合到内存中;此信息包括对象值属性。导出对象后,IRIS 会取消混合任何对象列表,但不会(默认情况下)取消混合单个对象引用。对于大型对象,这可能会导致 <STORE> 错误。

    要使任何单个对象引用在这种情况下不被混淆,请在支持 XML 的类中设置 XMLUNSWIZZLE 参数,如下所示:

    Parameter XMLUNSWIZZLE = 1;
    

    该参数的默认值为 0

    相关文章

      网友评论

          本文标题:第三十八章 其他特殊主题

          本文链接:https://www.haomeiwen.com/subject/wkxogdtx.html