Module  java.xml.bind

Class AttachmentMarshaller

    • 构造方法详细信息

      • AttachmentMarshaller

        public AttachmentMarshaller​()
    • 方法详细信息

      • addMtomAttachment

        public abstract String addMtomAttachment​(DataHandler data,
                                                 String elementNamespace,
                                                 String elementLocalName)

        考虑MIME内容data作为附件的优化二进制存储。

        对于数据类型为“base64Binary”的每个元素,当isXOPPackage()true ,由JAXB元数据流程调用此方法,如Creating XOP Packages中的步骤3 所述

        方法实现者确定data是否应单独附加或作为data数据内联。 如果实现选择优化作为MIME部分的二进制数据的存储,则它负责将data附加到基于MIME的包,然后分配唯一的content-id,cid来标识MIME消息中的MIME部分。 该方法返回cid,这使JAXB编组器能够组织引用该cid的XOP元素代替编组二进制数据。 当该方法返回null时,JAXB编组器将data作为base64binary数据。

        需要调用此方法才能满足以下约束。 如果包含data的元素信息集项目具有属性xmime:contentType或者如果表示data的JAXB属性/字段用已知的MIME类型进行注释, data.getContentType()应该设置为该MIME类型。

        elementNamespaceelementLocalName参数提供了包含二进制数据的上下文。 该信息可以由基于MIME的包处理器使用,以确定二进制数据是否应作为附件内联或优化。

        参数
        data - 表示要附加的数据。 必须非空。
        elementNamespace - 包含base64Binary数据的元素的命名空间URI。 可以是空的,但不能为空。
        elementLocalName - 元素的本地名称。 始终为非空的有效字符串。
        结果
        标识包含data的附件的有效content-id URI(见RFC 2387 )。 否则,如果没有添加附件,则应该为null,而应该在消息中内联。
        另请参见:
        XML-binary Optimized PackagingDescribing Media Content of Binary Data in XML
      • addMtomAttachment

        public abstract String addMtomAttachment​(byte[] data,
                                                 int offset,
                                                 int length,
                                                 String mimeType,
                                                 String elementNamespace,
                                                 String elementLocalName)

        考虑二进制data作为附件的优化二进制存储。

        由于内容类型未知,附件的MIME内容类型必须设置为“application / octet-stream”。

        elementNamespaceelementLocalName参数提供了包含二进制数据的上下文。 该信息可以由基于MIME的包处理器使用,以确定二进制数据是否应作为附件内联或优化。

        参数
        data - 表示要附加的数据。 必须非空。 实际数据区域由(data,offset,length)元组指定。
        offset - 要读取的第一个字节的数组中的偏移量; 必须是非负数,不大于array.length
        length - 从给定数组读取的字节数; 必须是非负数,不大于array.length
        mimeType - 如果数据具有JAXB已知的关联MIME类型,则作为此参数传递。 如果没有人知道,“应用程序/八位字节流”。 此参数可能永远不为空。
        elementNamespace - 包含base64Binary数据的元素的命名空间URI。 可以是空的,但不能为空。
        elementLocalName - 元素的本地名称。 始终为非空的有效字符串。
        结果
        content-id URI,cid,包含 data的附件,如果数据应该是内联, data null。
        另请参见:
        addMtomAttachment(DataHandler, String, String)
      • isXOPPackage

        public boolean isXOPPackage​()

        只读属性,如果JAXB编组器应该启用XOP创建,则返回true。

        在编组过程中,此值不能更改。 当此值为true时,当元数据进程遇到相应的二进制数据类型时,将调用addMtomAttachment(...)方法。

        如果此值为true并且要编组的XML内容违反了Creating XOP Pacakges http://www.w3.org/TR/2005/REC-xop10-20050125/#creating_xop_packages中的步骤1,则Marshaller.marshal()必须抛出IllegalStateException。 “确保原始XML信息集不包含[命名空间名称]为”http://www.w3.org/2004/08/xop/include“的元素信息项目和”包含“的[本地名称]

        当此方法返回true时,并且在组织过程中至少一次调用addMtomAttachment(...)返回content-id时,基于MIME的程序包处理器必须使用application / xop + xml介质类型标记根部件,如Creating XOP Pacakges的步骤5 所述

        结果
        如果MIME上下文是XOP包,则为true。
      • addSwaRefAttachment

        public abstract String addSwaRefAttachment​(DataHandler data)

        添加MIME data作为附件,并返回附件的content-id,cid。

        每个元素/属性的JAXB元数据流程都会调用此方法,其类型为{http://ws-i.org/profiles/basic/1.1/xsd}swaRef。 实现此方法的基于MIME的包处理器负责将指定的数据附加到MIME附件,并生成唯一标识基于MIME的包中的附件的content-id,cid。

        调用者将返回的content-id,cid插入正在编组的XML内容中。

        参数
        data - 表示要附加的数据。 必须非空。
        结果
        必须是一个用作cid的有效URI。 必须满足一致性要求R2928从WS-I Attachments Profile Version 1.0.