本主题为写消息处理节点以确保其功能正确性提供指导。它解释您可以如何使用消息处理节点来浏览消息。
附带到其他元素的连接的语法元素
语法元素树
元素 A 是树的根元素。它没有父代,因为它是根。它有元素 B 的第一个子代。 因为 A 没有其他子代,所以元素 B 也是 A 的最后一个子代。
元素 B 有三个子代:元素 C、D 和 E。 元素 C 是 B 的第一个子代;元素 E 是 B 的最后一个子代。
元素 C 有两个兄弟:元素 D 和 E。元素 C 的下一个兄弟是元素 D。元素 D 的下一个兄弟是元素 E。元素 E 的前一个兄弟是元素 D。元素 D 的前一个兄弟是元素 C。
一般消息中生成的第一个语法元素
这些第一代的元素通常作为“文件夹”引用,在其中存储表示消息头和消息内容数据的语法元素。在此示例中,根的第一个子代是属性文件夹。属性的下一个兄弟是进入 WebSphere MQ 消息的 MQMD 的文件夹。 下一个兄弟是 MQRFH2 头的文件夹。最后,有代表消息内容的文件夹,此消息(在此示例中)是一个 XML 消息。
上图包括 MQMD 和 MQRFH2 头。由消息处理节点接收的所有消息都包括 MQMD 头,还可以包括一些其他头。
<Business>
<Product type='messaging'></Product>
<Company>
<Title>IBM</Title>
<Location>Hursley</Location>
<Department>WebSphere MQ</Department>
</Company>
</Business>
您可以使用节点实用程序和方法(或类似的解析器实用程序函数)来通过消息浏览。采用上面显示的 XML 消息,您首先需要调用 cniRootElement,附带由节点接收的消息作为对此函数的输入。在 Java 中,您需要在进入 MbMessage 上调用 getRootElement。这返回代表元素的根的 MbElement。根元素不应该由用户定义的节点来修改。
上图显示根元素的最后的子代是包含 XML 解析树的文件夹。您可以通过在 C 节点中调用 cniLastChild(前一个调用的输出作为对此函数的输入)来浏览此文件夹,或通过在 Java 节点中的根元素上调用方法 getLastChild 来浏览此文件夹。
有一个仅(<Business>)在消息顶层的元素,因此调用 cniFirstChild(在 C 中)或 getFirstChild(在 Java 中)移动到树中的这一点。您可以使用 cniElementType 或 getElementType 来获取其类型( 即,名称),后跟 cniElementName 或 getName 来返回名称本身(业务)。
<业务> 有两个子代,<产品>和<公司>,因此,您可以使用 cniFirstChild 或 getFirstChild,后跟 cniNextSibling 或 getNextSibling 来依次浏览它们。
<产品> 具有属性(type='messaging'),它是一个子元素。再次使用 cniFirstChild 或 getFirstChild 来浏览到此元素,以及 cniElementType 或 getType 来返回其类型(即,名称-值)。如前使用 cniElementName 或 getName 来获取名称。要获取值,调用 cniElementValueType 来返回类型,后跟 cniElementValue 组中的适当函数。在此示例中,它会是 cniElementCharacterValue。在 Java 中使用方法 getValue,会返 回代表元素值的 Java 对象。
<公司> 具有三个子代,每个具有值元素(IBM、Hursley 和 WebSphere MQ)的子代。您可以使用已经描述为浏 览它们并访问其值的函数。
其他函数可以用于复制元素树(或树的一部分)。然后可以通过添加或除去元素修改副本,并更改其名称和值来创建输出消息。