如何使用Apache Camel XmlJsonDataFormat编组将XML字符串转换为JSON字符串

拉耶什

我正在尝试将以下程序中的XML String转换为JSON String。

我能够从文件而不是从字符串转换它。

有什么想法吗?

package com.tda.topology;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

import org.apache.camel.Exchange;   
import org.apache.camel.dataformat.xmljson.XmlJsonDataFormat;

public class Demo2 {

public static void main(String[] args) throws Exception {
    String xmlstring = "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://services.web.post.list.com\"><soapenv:Header><authInfo xsi:type=\"soap:authentication\" xmlns:soap=\"http://list.com/services/SoapRequestProcessor\"><!--You may enter the following 2 items in any order--><username xsi:type=\"xsd:string\">[email protected]</username><password xsi:type=\"xsd:string\">password</password></authInfo></soapenv:Header></soapenv:Envelope>";
    XmlJsonDataFormat xmlJsonDataFormat = new XmlJsonDataFormat();
    xmlJsonDataFormat.setEncoding("UTF-8");
    xmlJsonDataFormat.setForceTopLevelObject(true);
    xmlJsonDataFormat.setTrimSpaces(true);
    xmlJsonDataFormat.setRootName("newRoot");
    xmlJsonDataFormat.setSkipNamespaces(true);
    xmlJsonDataFormat.setRemoveNamespacePrefixes(true);

    Exchange exchange;
    //exchange.setIn(in);

    InputStream stream = new ByteArrayInputStream(xmlstring.getBytes(StandardCharsets.UTF_8));
    //xmlJsonDataFormat.getSerializer().readFromStream(stream).toString();
    //xmlJsonDataFormat.marshal(exchange, graph, stream);

}
} 

您需要在xmlJsonDataFormat对象上调用start,然后将xom jar添加到类路径(如果尚不存在)。这对我有用:

xmlJsonDataFormat.start();
String json = xmlJsonDataFormat.getSerializer().readFromStream(stream).toString();

通过查看源代码,我能够解决这个问题。getSerialiser返回的是null,因此我在xmlJsonDataFormat中搜索了初始化序列化程序的位置,并通过在超类的start方法中调用的doStart方法完成了初始化。

免责声明:不确定您是否应该使用这样的XmlJsonDataFormat,它通常是用于骆驼路线的:from("direct:marshal").marshal(xmlJsonFormat).to("mock:json");但是我不知道您的特定用例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Apache Camel XmlJsonDataFormat XML转换为JSON

来自分类Dev

使用字符串作为Apache Camel端点吗?

来自分类Dev

如何使用SwiftyJSON将字符串转换为JSON

来自分类Dev

如何使用gson将json转换为字符串

来自分类Dev

如何将JSON字符串转换为JSON

来自分类Dev

如何将Xml转换为字符串数组

来自分类Dev

如何将XML转换为C ++字符串

来自分类Dev

使用标签将xml转换为字符串php

来自分类Dev

如何将JSON数组转换为字符串..?

来自分类Dev

如何将JSON字符串转换为BSONDocument

来自分类Dev

如何将JSON转换为数组或字符串?

来自分类Dev

如何将SinkRecord转换为JSON字符串?

来自分类Dev

如何将JSON字符串转换为数字?

来自分类Dev

如何将JSON字符串转换为NSArray?

来自分类Dev

如何将JSON字符串转换为NSArray

来自分类Dev

如何将 JSON 转换为 php 字符串

来自分类Dev

如何将 JSON 转换为字符串?

来自分类Dev

如何将字符串转换为JSON友好字符串?

来自分类Dev

使用Swift将JSON字符串转换为NSDictionary

来自分类Dev

使用Ruby将YAML字符串转换为JSON

来自分类Dev

使用Java将字符串转换为JSON对象

来自分类Dev

使用Javascript将字符串转换为JSON

来自分类Dev

使用 PHP 将包含 JavaScript 对象的字符串转换为 JSON 字符串

来自分类Dev

使用 Python 将 XML 字符串转换为 JSON 时,如何防止将同名 XML 标签转换为数组?

来自分类Dev

无法使用Apache Camel 3.1.0将XML转换为JSON

来自分类Dev

用于检查Apache Camel XML中的字符串的JSONPath表达式

来自分类Dev

使用Apache BeanUtils将字符串转换为Enum

来自分类Dev

使用Apache Common将JSON UTC日期字符串转换为本地日期字符串

来自分类Dev

如何将字符串转换为Unicode字符

Related 相关文章

热门标签

归档