XML转换成json
来源:互联网 发布:mac文本编辑器 编辑:程序博客网 时间:2024/06/05 20:34
方式一:
import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import net.sf.json.JSON;import net.sf.json.xml.XMLSerializer;public class XMLToJson {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString xml = readXML();System.out.println(xml);XMLSerializer xmlSerializer = new XMLSerializer();//deal with the special field "type"xmlSerializer.setTypeHintsCompatibility(false);xmlSerializer.setTypeHintsEnabled(false);//xmlSerializer.setSkipNamespaces(true);//xmlSerializer.setSkipWhitespace(true);JSON json = xmlSerializer.read(xml);System.out.println(json.toString());//JsonAnalysis josnAnalysis = new JsonAnalysis(json.toString());//josnAnalysis.retrieveJson();}// read xml fileprivate static String readXML() throws IOException {String path = "C:\\Users\\hitler\\Desktop\\datatype\\bioproject_result.xml";FileInputStream fileInputStream = new FileInputStream(path);BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));String xml = "";String line;while ((line = reader.readLine()) != null) {xml = xml + line;}reader.close();return xml;}}
使用net.sf.json.xml.XMLSerializer解析的时候,会出现以下几个问题:
(1)当元素的属性中有"type"的时候,XMLSerializer默认是不解析的,如果想要程序对这个属性进行解析的话,需要添加以下代码:
xmlSerializer.setTypeHintsCompatibility(false);xmlSerializer.setTypeHintsEnabled(false);
(2)当元素节点没有属性的时候,XMLSerilizer就不会对其进行解析,具体解决办法参照【方式二】
方式二:
采用github上面的一个解析工具进行解析;
MavenDependency:
<dependency> <groupId>de.odysseus.staxon</groupId> <artifactId>staxon</artifactId> <version>1.3</version> </dependency> <!-- or, to use the Jackson streaming backend --> <dependency> <groupId>de.odysseus.staxon</groupId> <artifactId>staxon-jackson</artifactId> <version>1.3</version> </dependency>
具体应用代码:
示例一:
import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.xml.stream.XMLInputFactory;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamReader;import javax.xml.stream.XMLStreamWriter;import javax.xml.transform.Result;import javax.xml.transform.Source;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.stax.StAXResult;import javax.xml.transform.stax.StAXSource;import de.odysseus.staxon.json.JsonXMLConfig;import de.odysseus.staxon.json.JsonXMLConfigBuilder;import de.odysseus.staxon.json.JsonXMLOutputFactory;public class XmlToJsonStaxon {/** * Copy/format XML as JSON using * {@link Transformer#transform(Source, Result)}. * * @param args * ignored * @throws TransformerException * @throws XMLStreamException */public static void main(String[] args) throws TransformerException,XMLStreamException, IOException {InputStream input = XmlToJsonStaxon.class.getResourceAsStream("input.xml");OutputStream output = System.out;/* * If we want to insert JSON array boundaries for multiple elements, we * need to set the <code>autoArray</code> property. If our XML source * was decorated with <code><?xml-multiple?></code> processing * instructions, we'd set the <code>multiplePI</code> property instead. * With the <code>autoPrimitive</code> property set, element text gets * automatically converted to JSON primitives (number, boolean, null). */JsonXMLConfig config = new JsonXMLConfigBuilder().autoArray(false).autoPrimitive(true).prettyPrint(true).build();try {/* * Create source (XML). */XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(input);Source source = new StAXSource(reader);/* * Create result (JSON). */XMLStreamWriter writer = new JsonXMLOutputFactory(config).createXMLStreamWriter(output);Result result = new StAXResult(writer);/* * Copy source to result via "identity transform". */TransformerFactory.newInstance().newTransformer().transform(source, result);System.out.println();/* * JsonAnalysis josnAnalysis = new JsonAnalysis((JSON) System.out); * josnAnalysis.retrieveJson(); */} finally {/* * As per StAX specification, XMLStreamReader/Writer.close() doesn't * close the underlying stream. */output.close();input.close();}}}示例二:
import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.StringReader;import java.io.StringWriter;import javax.xml.stream.XMLEventReader;import javax.xml.stream.XMLEventWriter;import javax.xml.stream.XMLInputFactory;import de.odysseus.staxon.json.JsonXMLConfig;import de.odysseus.staxon.json.JsonXMLConfigBuilder;import de.odysseus.staxon.json.JsonXMLOutputFactory;public class StaxonUtils {public static void main(String[] args) throws IOException {String xml = readXML();String json = xml2json(xml);System.out.println(json);JsonAnalysis josnAnalysis = new JsonAnalysis(json);josnAnalysis.retrieveJson();}// read xml fileprivate static String readXML() throws IOException {String path = "C:\\Users\\hitler\\Desktop\\datatype\\bioproject_result_neww.xml";FileInputStream fileInputStream = new FileInputStream(path);BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));String xml = "";String line;while ((line = reader.readLine()) != null) {xml = xml + line;}reader.close();return xml;}// convert xml to jsonpublic static String xml2json(String xml) {StringReader input = new StringReader(xml);StringWriter output = new StringWriter();JsonXMLConfig config = new JsonXMLConfigBuilder().autoArray(false).autoPrimitive(true).prettyPrint(true).build();try {XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(input);XMLEventWriter writer = new JsonXMLOutputFactory(config).createXMLEventWriter(output);writer.add(reader);reader.close();writer.close();} catch (Exception e) {e.printStackTrace();} finally {try {output.close();input.close();} catch (IOException e) {e.printStackTrace();}}return output.toString();}}
0 0
- XML转换成JSON
- xml转换成json
- XML转换成json
- XML转换成JSON
- xml转换成json
- JSON转换成XML、XML转换成JSON
- XML格式转换成JSON
- C#将XML转换成JSON转换XML
- json,xml转换成hash (brown_zhang)
- XML转换成JSON (C#版)
- 将String格式XML转换成JSON
- JSON格式转换成XML格式
- XML与JSON转换
- java 转换xml json
- xStream转换XML、JSON
- xml转换json
- xStream转换XML、JSON
- JSON-XML转换工具
- C++ STL容器的理解
- 面试可能遇到这样的问题 TCP HTTP SOCKET之间的有什么关系
- 构造+贪心 Codeforces584E Anton and Ira
- ios 接受 java 服务器 框架 spring mvc 解析json对象 存在中文乱码 已解决!!!!!
- Timus Online Judge 1742 Team building
- XML转换成json
- Android——SharedPreferences
- leetcode121 Best Time to Buy and Sell Stock
- c#调用C++DLL参数对应
- 我的科研之路[一]
- ubuntu下安装phpmyadmin打开后出现404
- Twig模版语言入门
- jquery中clientY,pageY和screenY的区别
- Java与C/C++互调用法(JNI调用第三方库)