从 JavaCompute 节点访问消息树中的元素

要访问消息的内容进行读或写时,请使用解析器根据输入位流创建的树中的元素结构和排列。从树的顶部开始,按照相关的父子关系向下访问,直至到达所需的元素。

消息树作为求值方法的自变量传递到 JavaCompute 节点。该自变量是 MbMessageAssembly 对象。MbMessageAssembly 包含四类消息对象:
  • 消息
  • 本地环境
  • 全局环境
  • 异常列表
除全局环境外,其他对象均为只读对象。如果尝试写入只读对象,则会抛出 MbReadOnlyException。
本主题包含以下有关访问消息树中的元素的信息:

遍历元素树

该表显示了可用于访问元素树的 Java 方法和该树中每个点的等价 ESQL 相关名。
MbMessageAssembly 的 Java 访问程序 ESQL 相关名
getMessage().getRootElement() InputRoot
getMessage().getRootElement().getLastChild() InputBody
getLocalEnvironment().getRootElement() InputLocalEnvironment
getGlobalEnvironment().getRootElement() Environment
getExceptionList().getRootElement() InputExceptionList
以下方法可用于从类型为 MbElement 的元素遍历消息树:
getParent()
返回当前元素的父元素
getPreviousSibling()
返回当前元素的上一个同代
getNextSibling()
返回当前元素的下一个同代
getFirstChild()
返回当前元素的第一个子代
getLastChild()
返回当前元素的最后一个子代

以下示例显示了一条简单的 XML 消息以及将根据该消息创建的逻辑树。本示例中,该消息已使用的 WebSphere MQ 发送。该逻辑树图还显示了浏览树时需要调用的方法。

<document>
  <chapter title='Introduction'>
    某些文本。
  </chapter>
</document>

该图显示了您浏览消息树时需要调用的方法。此处使用的树是通过解析本主题中给出的 XML 示例创建的树。从该树的 Root 部分调用 getFirstChild() 会浏览到 Properties。从 Root 调用 getLastChild() 还会返回 XML。从 Properties 调用 getParent() 会返回 Root,调用 getNextSibling() 会返回 MQMD。从 MQMD,调用 getPreviousSibling() 会返回 Properties,调用 getParent() 会返回 Root,调用 getNextSibling() 会返回 XML。从 XML 调用 getPreviousSibling() 会返回 MQMD,调用 getParent() 会返回 Root,调用 getFirstChild() 会返回 document,调用 getLastChild() 也会返回 document。从 document 调用 getParent() 会返回 XML,调用 getFirstChild() 会返回 chapter,调用 getLastChild() 也会返回 chapter。从 chapter 调用 getParent() 会返回 document,调用 getFirstChild() 会返回 title,调用 getLastChild() 会返回包含消息数据“某些文本。”的子代。

以下 Java 代码访问该逻辑树中的 chapter 元素:
MbElement root = assembly.getMessage().getRootElement();
MbElement chapter = root.getLastChild().getFirstChild().getFirstChild();

使用 JavaCompute 节点访问有关元素的信息

使用以下方法返回有关所引用元素的信息。用户定义的 Java 节点 API 提供了有关这些方法的进一步详细信息:
getName()
以 java.lang.String 格式返回元素名称
getValue()
返回元素值
getType()
返回一般类型,它是以下某种类型:
  • NAME。这种类型的元素有名称,但没有值。
  • VALUE。这种类型的元素具有值,但没有名称。
  • NAME/VALUE。这种类型的元素既有值又有名称。
getSpecificType()
返回特定于解析器的元素类型
getNamespace()
返回该元素的名称空间 URI
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac30330_