Java解析XML格式的字符串


1 解析Xml

1.1 添加项目依赖

     
        
            dom4j
            dom4j
            1.6.1
        

1.2 返回的Xml使用字符串换行

String returnMsg = "<?xml version=\"1.0\" encoding=\"gb2312\"?>" +
                "" +
                "" +
                "001" +
                "张三" +
                "22" +
                "" +
                "" +
                "002" +
                "李四" +
                "33" +
                "" +
                "";

测试代码

@Test
    public void test1() {
        String returnMsg = "<?xml version=\"1.0\" encoding=\"gb2312\"?>" +
                "" +
                "" +
                "001" +
                "张三" +
                "22" +
                "" +
                "" +
                "002" +
                "李四" +
                "33" +
                "" +
                "";

        try {
            Document doc = DocumentHelper.parseText(returnMsg);
            Element roots = doc.getRootElement();
//            System.out.println("根节点 = [" + roots.getName() + "]");
//            System.out.println("内容:" + roots.getText());
            Iterator elements = roots.elementIterator();
            while (elements.hasNext()) {
                Element child = (Element) elements.next();
                //System.out.println("节点名称 = [" + child.getName() + "]"+"节点内容:"+child.getText());
                List subElements = child.elements();

                List> treeMapList = new ArrayList<>();

                for (int i = 0; i < subElements.size(); i++) {
                    Map mapData = new HashedMap();
                    Element subChild = (Element) subElements.get(i);
                    mapData.put(subChild.getName(), subChild.getText());
                    treeMapList.add(mapData);
                    //System.out.println("子节点名称:"+subChild.getName()+";子节点内容:"+subChild.getText());
                }
                System.out.println(treeMapList);
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

测试结果

1.3 返回的Xml没有换行

String strXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>  7474741 不服?咋滴 88 {\"jobId\":\"666888\",\"requestId\":\"639D1D03-1557-4AD7-9AD7-691F02834516\",\"state\":\"Success\"} ";

测试代码

@Test
    public void test2() {
        String strXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>  7474741 不服?咋滴 88 {\"jobId\":\"666888\",\"requestId\":\"639D1D03-1557-4AD7-9AD7-691F02834516\",\"state\":\"Success\"} ";

        try {
            Document doc = DocumentHelper.parseText(strXML);

            // 指向根节点
            Element root = doc.getRootElement();

            Iterator it = root.elementIterator();
            while (it.hasNext()) {
                // 一个Item节点
                Element element = (Element) it.next();
                System.out.println(element.getName() + " : " + element.getTextTrim());
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

测试结果