IBM Integration Bus在JavaCompute节点中不生成xml属性

时间:2017-02-28 16:41:04

标签: java xml ibm-integration-bus

我按照IBM Knowledge Center中的说明在JavaCompute节点中创建新的XML文档。问题是输出与文档类似

我的代码是

MbElement itemMaintance = body.createElementAsLastChild(MbElement.TYPE_NAME, "ItemMaintance", null);

MbElement item = itemMaintance.createElementAsLastChild(MbElement.TYPE_NAME, "ItemMaintance", null);
MbElement action = item.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Action", "ACTION");
MbElement serialNumberFlag = item.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "serialNumberFlag", "0123456789");

输出

<ItemMaintance>
    <Item>
        <Action>ACTION</Action>
        <SerialNumberFlag>0123456789</SerialNumberFlag>
    </Item>
</ItemMaintance>

应该是

<ItemMaintance>
    <Item Action="ACTION" SerialNumberFlag="0123456789"/>
</ItemMaintance>

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您应该使用MbXMLNSC而不是MbElement作为XML属性的元素类型:

MbElement root = outMessage.getRootElement();
MbElement body = root.createElementAsLastChild( MbXMLNSC.PARSER_NAME);  
MbElement itemMaintance = body.createElementAsLastChild( MbElement.TYPE_NAME, "ItemMaintance", null);

MbElement item = itemMaintance.createElementAsLastChild( MbElement.TYPE_NAME, "Item", null);
MbElement action = item.createElementAsLastChild( MbXMLNSC.ATTRIBUTE, "Action", "ACTION");
MbElement serialNumberFlag = item.createElementAsLastChild( MbXMLNSC.ATTRIBUTE, "serialNumberFlag", "0123456789");

此页面说明了如何执行此操作:https://www.ibm.com/support/knowledgecenter/en/SSMKHH_10.0.0/com.ibm.etools.mft.doc/ac67180_.htm