【问题标题】:lotus.domino.Document.generateXML() <item name='$FILE'>lotus.domino.Document.generateXML() <item name='$FILE'>
【发布时间】:2021-06-11 08:50:04
【问题描述】:

我已经使用generateXML() 方法从lotus.domino.Document 生成了XMl 文件。

下面是生成的 XML 的片段。

<item name="$FILE" summary="true" sign="true" seal="true">
   <object>
      <file hosttype="msdos" compression="none" flags="storedindoc" encoding="none" name="13303154.pdf" size="864787">
         <created>
            <datetime dst="true">20210331T164922,93-04</datetime>
         </created>
         <modified>
            <datetime dst="true">20210331T164922,93-04</datetime>
         </modified>
         <filedata>somedatahere</filedata>
      </file>
   </object>
</item>

我的问题是,如何从数据中获取13303154.pdf。数据太长,这里就不贴了。如果需要,我也可以发布数据。

提前致谢

【问题讨论】:

  • 我的理解是这是base64编码的数据,但并不直接代表文件。它表示 Notes API 用作 NSF 内文件数据容器的 CD 记录的二进制数据。换句话说,文件数据在那里,但它的结构需要Notes API 头文件才能正确解释。 StackOverflow 上还有几个其他问题指出了这一点,尽管这些问题的背景是嵌入式图形而不是附件。
  • 感谢@RichardSchwartz 的支持。由于这两个链接都不是决定性的,我试图从不同的途径获取文件。我认为没有任何直接的 API 可以将 XML 数据读取到文件中。再次感谢您的支持。
  • 我刚刚注意到另一件事。 XML 指示 $FILE 项的 seal="true"。这意味着文档已加密,并且附件在加密范围内。除非您拥有当前用户 ID 中的密钥,否则您无法从文档的加密数据中读取 任何内容。这可以是私钥或共享密钥,具体取决于文档的创建方式。
  • 感谢@RichardSchwartz。我不知道那件事。我将使用 emobj.extractFile("uniquePath" + File.separatorChar + "attachmentName");用于提取附件。

标签: java xml lotus-notes


【解决方案1】:

您可以在 Document 上使用getAttachment(String filename) 方法。

【讨论】:

  • 谢谢亨利克。我已经试过了。调用该方法时我收到null。因此生成了 XML,因此可以随时使用数据。也找不到获取附件名称的方法。 getEmbeddedObjects() 给出了空白数组。
  • 如果我没记错的话,附件可以通过 NotesDocument.getEmbeddedObjects 或通过 NotesRichTextField.getEmbedded 对象获得。你必须尝试他们两个。这取决于文件的附加方式。但是使用 NotesSession.Evaluate("@AttachmentNames",NotesDocument) 将获取所有附件,无论它们是附加在文档级别还是富文本字段中。
猜你喜欢
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 2022-12-26
  • 2020-02-09
  • 1970-01-01
  • 2014-09-03
相关资源
最近更新 更多