xml和json之间的简单转换

读入以下的score.xml文件,并转化为JSON Object对象,输出JSON Object的字符串表达式。最后,根据JSON Object 的值和score.xml的样式,重新生成score2.xml。


<students>
    <student>
        <name>Tomname>
        <subject>mathsubject>
        <score>80score>
    student>
    <student>
        <name>Jackname>
        <subject>pesubject>
        <score>90score>
    student>
    <student>
        <name>Rackname>
        <subject>englishsubject>
        <score>75score>
    student>
students>

读取和写入xml方法不限,JSON处理方法不限。

最后,需要提交源码,score.xml截图,json 字符串输出截图,score2.xml截图。

public class Test {
    public static void main(String[] args) {
        List<Student> stuList = xmlFileToStu(new File("students.xml"));

        String jsonStr = stuToJsonStr(stuList);
        System.out.println(jsonStr); //打印json字符串

        stuToXmlFile(stuList, new File("students2.xml"));
    }

    /**
     * xml文件转集合
     */
    public static List<Student> xmlFileToStu(File file) {
        Student stu = null;
        ArrayList<Student> stuList = new ArrayList<>();

        try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
            XMLStreamReader streamReader = XMLInputFactory.newFactory().createXMLStreamReader(reader);

            while (streamReader.hasNext()) {
                streamReader.next();
                if (streamReader.isStartElement()) {
                    String tagName = streamReader.getLocalName();
                    switch (tagName) {
                        case "student":
                            stu = new Student();
                            break;
                        case "name":
                            stu.setName(streamReader.getElementText());
                            break;
                        case "subject":
                            stu.setSubject(streamReader.getElementText());
                            break;
                        case "score":
                            stu.setScore(Integer.valueOf(streamReader.getElementText()));
                            break;
                    }
                } else if (streamReader.isEndElement() && streamReader.getLocalName().equals("student")) {
                    stuList.add(stu);
                }

            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XMLStreamException e) {
            e.printStackTrace();
        }

        return stuList;
    }

    /**
     * 集合转json字符串
     */
    public static String stuToJsonStr(List<Student> stuList) {
        ObjectMapper mapper = new ObjectMapper();
        String jsonStr = "";
        try {
            jsonStr = mapper.writeValueAsString(stuList);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return jsonStr;
    }

    /**
     * 集合转xml文件
     */
    public static void stuToXmlFile(List<Student> stuList, File file) {
        try {
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document document = builder.newDocument();
            Element students = document.createElement("students");
            document.appendChild(students);

            for (Student stu : stuList) {
                Element student = document.createElement("student");
                students.appendChild(student);

                Element name = document.createElement("name");
                Element score = document.createElement("score");
                Element subject = document.createElement("subject");
                name.setTextContent(stu.getName());
                score.setTextContent(String.valueOf(stu.getScore()));
                subject.setTextContent(stu.getSubject());

                student.appendChild(name);
                student.appendChild(score);
                student.appendChild(subject);
            }

            StreamResult streamResult = new StreamResult(file);
            DOMSource domSource = new DOMSource(document);
            Transformer transformer = TransformerFactory.newInstance().newTransformer();
            transformer.transform(domSource, streamResult);

        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        }

    }

}

你可能感兴趣的:(Java,xml,json,dom)