java 解析xml报文(字符串)「建议收藏」

java 解析xml报文(字符串)「建议收藏」一:maven:<!–解析xml报文–><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1….

大家好,又见面了,我是你们的朋友全栈君。

一: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);
    }

控制台:

java 解析xml报文(字符串)「建议收藏」

ps:更换xml的报文需要更改工具类的节点名称

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135916.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)
blank

相关推荐

  • IntelliJ IDEA中创建java项目

    IntelliJ IDEA中创建java项目IntelliJIDEA支持java、Android、Maven、Gradle、Kotlin等类型的项目,同时AndroidStudio就是在其基础上二次开发出来的,功能非常强大。本文以IntelliJIDEA2018.2.5版本为例介绍如何创建java项目。1.依次选择菜单:File->New->Project…,打开NewProject界面。2.在左侧的项目类型里选择:Java,点击Next按钮。3.在出现的界面中选中“Createprojectfromtempl

  • Tokyo Tyrant(TTServer)系列(四)-tcrmgr远程管理与调试

    Tokyo Tyrant(TTServer)系列(四)-tcrmgr远程管理与调试

  • Mac 系统中使用maven 配置环境变量

    Mac 系统中使用maven 配置环境变量Mac系统中配置maven使用Mac系统配置maven环境变量,针对单独用户配置。在~/.bash_profile中配置PATH路径。一、下载maven的zip压缩包下载路径二、配置单独用户的.bash_profile文件1.vim~/.bash_profile2.输入exportMAVEN_HOME=/Users/zhang/Documents/a…

  • MaxCompute UDF

    MaxCompute UDF阿里云数仓离线UDF开发指南。

  • 常见的SQL笔试题和面试题(上):经典50题

    常见的SQL笔试题和面试题(上):经典50题https://zhuanlan.zhihu.com/p/38354000常见的SQL笔试题和面试题(上):经典50题已知有如下4张表:学生表:STUDENT(S#,SNAME,SAGE,SSEX)课程表:COURSE(C#,CNAME,T#)成绩表:SC(S#,C#,SCORE)教师表:TEACHER(T#,TNAME)其中,1)学生表里的字段含义:S#代表学号,SNAME代表学生姓名,SAGE…

  • 思科配置VLAN的实例

    思科配置VLAN的实例在我们上面的环境,是一个传统的网络,所有的主机都在一个广播域地址,正是这个原因,使得网络当中的广播包,给整个网络带来巨大的压力。总之,在这种情况下,同一个vlan的主机可以通信,不同一个vlan的主机不可以通信。pc2和pc4同属vlan20,(同一个vlan的主机可以通信)VLAN就是虚拟局域网的意思,它的特点是灵活性高,可扩展性高。好了,我们有关于思科配置VLAN的实例就到这里了,谢谢大家。在sw1上将相应的接口加入到相应的vlan,(在sw2上将相应的接口加入到相应的vlan,(…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号