java 解析xml報文(字符串)

一:maven:

        <!--解析xml報文-->
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

二:工具類:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

/**
 * @description 解析xml字符串
 */
public class Test {
    public static void readStringXml(String xml) {
        Document doc = null;
        try {
            doc = DocumentHelper.parseText(xml); // 將字符串轉爲XML
            Element rootElt = doc.getRootElement(); // 獲取根節點
            System.out.println("根節點:" + rootElt.getName()); // 拿到根節點的名稱
            Iterator iter = rootElt.elementIterator("head"); // 獲取根節點下的子節點head
            // 遍歷head節點
            while (iter.hasNext()) {
                Element recordEle = (Element) iter.next();
                String title = recordEle.elementTextTrim("title"); // 拿到head節點下的子節點title值
                System.out.println("title:" + title);
                Iterator iters = recordEle.elementIterator("script"); // 獲取子節點head下的子節點script
                // 遍歷Header節點下的Response節點
                while (iters.hasNext()) {
                    Element itemEle = (Element) iters.next();
                    String username = itemEle.elementTextTrim("username"); // 拿到head下的子節點script下的字節點username的值
                    String password = itemEle.elementTextTrim("password");
                    System.out.println("username:" + username);
                    System.out.println("password:" + password);
                }
            }
            Iterator iterss = rootElt.elementIterator("body"); ///獲取根節點下的子節點body
            // 遍歷body節點
            while (iterss.hasNext()) {
                Element recordEless = (Element) iterss.next();
                String result = recordEless.elementTextTrim("result"); // 拿到body節點下的子節點result值
                System.out.println("result:" + result);
                Iterator itersElIterator = recordEless.elementIterator("form"); // 獲取子節點body下的子節點form
                // 遍歷Header節點下的Response節點
                while (itersElIterator.hasNext()) {
                    Element itemEle = (Element) itersElIterator.next();
                    String banlce = itemEle.elementTextTrim("banlce"); // 拿到body下的子節點form下的字節點banlce的值
                    String subID = itemEle.elementTextTrim("subID");
                    System.out.println("banlce:" + banlce);
                    System.out.println("subID:" + subID);
                }
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

三:測試

    public static void main(String[] args) {
        String xmlString = "<html>"
                + "<head>"
                + "     <title>dom4j解析一個例子</title>"
                + "     <script>"
                + "         <username>yangrong</username>"
                + "         <password>123456</password>"
                + "     </script>"
                + "</head>"
                + "<body>"
                + "     <result>0</result>"
                + "     <form>"
                + "         <banlce>1000</banlce>"
                + "         <subID>36242519880716</subID>"
                + "     </form>"
                + "     <form>"
                + "         <banlce>200</banlce>"
                + "         <subID>222222222222</subID>"
                + "     </form>"
                + "</body>"
                + "</html>";
        readStringXml(xmlString);
    }

控制檯:

ps:更換xml的報文需要更改工具類的節點名稱

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章