当前位置: 首页 > 知识库问答 >
问题:

如何使用apache camel在xml中生成自定义标记名和名称空间

傅旺
2023-03-14

我正在尝试使用camel Bindy将管道分隔的字符串数据转换为xml。但它正在生成标记和类名。此外,我想添加命名空间到我的标记。

我试图使用Camel进程来生成自定义标记,但它不起作用。


    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();
                }
            }
        });
    }
}
@CsvRecord(separator = "\\|",skipField = true)
public class Pojo {

    @Link
    private ControlSegment CONTROL_SEGMENT;

}
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)。另外,我试图生成命名空间,但在输出中没有生成命名空间。

共有1个答案

汲丰茂
2023-03-14

您可以添加一个额外的XSLT路由(https://camel.apache.org/components/latest/xslt-component.html)。在XSLT中,可以根据您的喜好转换XML并添加正确的名称空间(如何使用XSLT将名称空间添加到XML的根元素中?)

 类似资料:
  • 我正在尝试将管道分隔字符串转换为xml,这很好。但是,我没有得到我在下面展示的实际输出。在我的输出中,父标记与包名一起生成,它也没有生成我想要的名称空间。你能帮我把平面文件转换成我期望的精确输出吗。 CamelConfig。JAVA ConverterRoute。JAVA 来源txt Test.java 输出 测验xml 预期产量 测验xml

  • 这是我在这里的第一篇帖子。。。 我正在尝试使用Hy中的赋值(在Python 3上运行)来更改XML元素。 当我尝试运行代码段时: 我得到一个错误: Traceback(最近一次调用):File"/usr/bin/hy",第9行,load_entry_point('hy==0.11.0','console_scripts','hy')()File"/usr/lib/python3/dist-包/hy

  • 当我试图使用数据绑定和绑定布局中的自定义XML标记运行项目时,遇到以下描述的构建错误:

  • 问题内容: 我有一个名为的复合组件,并且正在构建另一个名为的复合组件。但是,当我尝试在of中使用时,抛出了以下异常: 标记库支持名称空间:http : //java.sun.com/jsf/composite/mycomponents,但是未为名称foo定义任何标记 这是怎么引起的,我该如何解决? 问题答案: 这是由Mojarra 2.1.8中引入的错误引起的,此错误在2.1.9中继续存在,并在2

  • 问题内容: 我们正在使用JAXB生成Java类,并且遇到了几种情况,其中生成的复数方法名称不正确。例如,我们期望在哪里得到。我们如何定制JAXB如何使特定方法复数? 模式: 生成的Java代码: 更新资料 布莱斯已经回答了。但是,我宁愿不要在XML模式中混合诸如JAXB自定义之类的问题。因此,对于那些具有相同首选项的人来说,这是一个JAXB绑定文件,可以实现与Blaise建议的功能相同的东西,而将

  • 问题内容: 我正在尝试解析OpenOffice ODS电子表格中的内容。ods格式实质上只是一个带有许多文档的zip文件。电子表格的内容存储在“ content.xml”中。 电子表格的内容在一个单元格中: 我们也可以直接进入行: 各个元素都知道名称空间: 如何直接在find / findall中使用命名空间? 明显的解决方案不起作用。 尝试从表中获取行: 问题答案: 如果包含名称空间前缀,则可以