如何在 Java 计算节点中设置 xmlns 属性值?

How to set xmlns attribute value in Java Compute Node?

我试图将以下 xml 消息传播到 IBM Integration Bus 中的文件输出节点。

<Resto xmlns = 'https://whosebug.com'><Location network_id="5dfweg68h"><Category>Continental</Category></Location></Resto>

以下是我构建上述 xml 消息的相关 Java 代码:

MbElement xmlBody = outMessage.getRootElement().createElementAsLastChild(MbXMLNSC.PARSER_NAME);
MbElement xmlParent = xmlBody.createElementAsLastChild(MbElement.TYPE_NAME, "Resto", null);
xmlParent.createElementAsLastChild(MbXMLNSC.ATTRIBUTE, "xmlns", "https://whosebug.com");

MbElement locationParser = xmlParent.createElementAsLastChild(MbElement.TYPE_NAME, "Location", null);
locationParser.createElementAsLastChild(MbXMLNSC.ATTRIBUTE, "network_id", "5dfweg68h");
locationParser.createElementAsLastChild(MbElement.TYPE_NAME_VALUE,"Category","Continental");

在调试我的应用程序时,我遇到了 XML 写入错误。我思考了一下必要的解决方案,发现添加名称空间前缀可以解决问题。不加前缀不行吗?如果不是,谁能指导我通过建议在 Java 计算节点中进行必要的更改来分配必要的值?

注意: 分配给 xmlns 的字符串应该在 xml 消息中用单引号括起来。

使用常量MbXMLNSC.NAMESPACE_DECLARATION声明命名空间:

MbElement xmlBody = outMessage.getRootElement().createElementAsLastChild(MbXMLNSC.PARSER_NAME);
MbElement xmlParent = xmlBody.createElementAsLastChild(MbElement.TYPE_NAME, "Resto", null);
xmlParent.createElementAsFirstChild(MbXMLNSC.NAMESPACE_DECLARATION, "xmlns", "https://whosebug.com");

如果您的 XSD 定义 XML 元素是 qualified,您必须明确设置命名空间。示例:

xmlParent.setNamespace("https://whosebug.com");
locationParser.setNamespace("https://whosebug.com");
locationParser.createElementAsLastChild(MbElement.TYPE_NAME_VALUE,
     "Category", "Continental").setNamespace("https://whosebug.com");