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

缺少元素的XML到JSON转换

羊舌迪
2023-03-14
<?xml version="1.0" encoding="UTF-8"?>
-<ns0:MT_ECCJDBC xmlns:ns0="urn:xml:json">
-<REQUEST>
<ID>46565665</ID>
</REQUEST>
</ns0:MT_ECCJDBC>
{
  "@xmlns:ns0": "urn:xml:json",
  "REQUEST": ["46565665"]
}
{
   "REQUEST": 

{
   " ID " : ["46565665"]
}

}
public class ConversionXMLtoJSON {

    public static void main(String[] args) throws Exception {

                    {
        InputStream is = ConversionXMLtoJSON.class.getResourceAsStream("instance.xml");
        String xml = IOUtils.toString(is);
        XMLSerializer xmlSerializer = new XMLSerializer();
        JSON json = xmlSerializer.read( xml );
        System.out.println( json.toString(2) );
    }                   
}
}
    null

问候

共有1个答案

裴成文
2023-03-14

您可以将XML映射到Java对象,然后使用JSON生成器生成JSON。我喜欢使用jackson-mapper-asl、jackson-core-asl和jackson-dataformat-xml。

要将XML绑定到Java:

public class XmlRequest {

    @JacksonXmlElementWrapper(localName="REQUEST")
    private REQUEST request;


    public static class REQUEST {
        @JacksonXmlProperty(localName="ID")
        protected int ID;

        public int getID() {
            return ID;
        }

        public void setID(int iD) {
            ID = iD;
        }

    }

    public REQUEST getRequest() {
        return request;
    }

    public void setRequest(REQUEST request) {
        this.request = request;
    }
}

生成JSON:

XmlMapper mapper = new XmlMapper();
XmlRequest request = (XmlRequest) mapper.readValue(App.class.getResourceAsStream("/NewFile.xml"), XmlRequest.class);

StringWriter sw = new StringWriter();

JsonGenerator jsongen = new JsonFactory().createJsonGenerator(System.out);

jsongen.writeStartObject();
jsongen.writeFieldName("REQUEST");
jsongen.writeStartObject();     
jsongen.writeFieldName("ID");
jsongen.writeStartArray();
jsongen.writeNumber(request.getRequest().getID());
jsongen.writeEndArray();
jsongen.writeEndObject();
jsongen.writeEndObject();
jsongen.close();
 类似资料:
  • 我试图使用python selenium实现一些自动化功能,但遇到了一些奇怪的行为。 html的总体布局: 现在,每个iframe实际上都有相同的内部html,网站上的代码似乎是随机选择哪个iframe得到了显示="块"。然而,我找不到任何iframe。 我尝试了一种标准方法:

  • 下面是XSD。 下面是xml文件。 当尝试使用http://www.utilities-online.info/xsdvalidation验证它时,我得到以下错误 第2行62:org.xml.sax.SAXParseException;行号:2;列号:62;CVC-ELT.1:找不到元素“Message”的声明。

  • 问题内容: 我在Mac OS X 10.6.8上的Python 2.7.3中运行以下代码。 并且文件foo包含 输出是 为什么我没有收到短信?我该如何访问? 谢谢 问题答案: 尝试这个: 输出: 该属性将文本保留在元素的结束标记之后。 与其他XML模型(例如DOM)相比,lxml和ElementTree具有特殊性。有关更多信息,请参见http://infohost.nmt.edu/tcc/help

  • 问题内容: 当我在命令行中回显$ PATH时,它将返回 当我执行这个PHP代码 我懂了 这是在Mac OS X上。谁能告诉我为什么我的最后两个路径元素丢失了? 问题答案: Mac OS X上的环境变量由不同的机制来设置,具体取决于启动代码或其父进程的方式。为了确保从交互式外壳程序启动的项目和由WindowServer启动的项目具有相同的路径,您需要使〜/ .MacOSX / environment

  • 我有以下JAXB对象: 我使用JAXB编组程序将对象转换为XML: 它运行平稳,没有任何异常,但是,结果总是缺少元素键。我试图将其改为Attribute,但它也不起作用。以下是输出示例: 我曾尝试将键更改为另一个名称,例如AuthKey,但它仍然缺失。我做错了什么? 编辑我发现了问题,这是因为我的键的值是空的。如果它包含值,则将其写入XML。然而,您能解释一下为什么在XMLElement中,我写了

  • 为什么验证器(http://validator.w3.org/)拒绝这个?什么属性是我不知道的“必需”? 错误: 错误行408,第142列:元素链接缺少必需的属性/模块/14ce1e21/peadig eucookie。css'type='text/css'media='all'/