gpt4 book ai didi

java - 如何使用 apache Camel 在 xml 中生成自定义标签名称和命名空间

转载 作者:行者123 更新时间:2023-12-02 09:28:20 24 4
gpt4 key购买 nike

我正在尝试使用驼峰绑定(bind)将管道分隔的字符串数据转换为 xml。但它正在生成标签和类名。我还想将命名空间添加到我的标签中。

我尝试使用Camel流程生成自定义标签,但不起作用。

ConverterRoute.java


private static final String SOURCE_INPUT_PATH = "file://inbox?fileName=3000.txt";

private static final String SOURCE_OUTPUT_PATH = "file://outbox?fileName=itemfile.xml";

public void addRoutesToCamelContext(CamelContext context) throws Exception {
context.addRoutes(new RouteBuilder() {
public void configure() {
try {
DataFormat bindyFixed = new BindyCsvDataFormat(PartInboundIFD.class);

NameSpace nameSpace = new NameSpace("PART_INB_IFD","https://apache.org.com");
from(SOURCE_INPUT_PATH).
unmarshal(bindyFixed).
marshal().
xstream().
to(SOURCE_OUTPUT_PATH);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}

Pojo.java

@CsvRecord(separator = "\\|",skipField = true)
public class Pojo {

@Link
private ControlSegment CONTROL_SEGMENT;

}

CamelComponent.java

public class CamelConfig extends RouteBuilder {
@Override
public void configure() throws Exception {
try {
CamelContext context = new DefaultCamelContext();
ConverterRoute route = new ConverterRoute();
route.addRoutesToCamelContext(context);
context.start();
Thread.sleep(5000);
context.stop();
} catch (Exception exe) {
exe.printStackTrace();
}
}
}

输出Result.xml

<list>
<com.abc.domain.Pojo>
<CONTROL__SEGMENT/>
<TRNNAM>PART_TRAN</TRNNAM>
<TRNVER>9.0</TRNVER>
</com.abc.domain.Pojo>
</list>

上面发布的是给定转换的输出。在第一个标签中,它打印带有整个包和类名的标签名称(例如:com.abc.domain.Pojo)。此外,我正在尝试生成其 namespace 没有在我的输出中生成它。

最佳答案

也许您可以添加额外的 XSLT 路由 ( https://camel.apache.org/components/latest/xslt-component.html )。在 XSLT 中,可以根据您的喜好转换 XML 并添加正确的命名空间 ( How can I add namespaces to the root element of my XML using XSLT? )

关于java - 如何使用 apache Camel 在 xml 中生成自定义标签名称和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58175416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com