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)


相关推荐

  • sm4 前后端 加密_sm4加密[通俗易懂]

    sm4 前后端 加密_sm4加密[通俗易懂]前言项目里需要用到sm4加密,在这里记录一下(springboot)。依赖bouncycastleorg.bouncycastlebcmail-jdk15on1.66cn.hutoolhutool-all5.4.1代码直接贴代码,可以根据自己的需要封装相对应的代码逻辑。//需要注意的是,使用KeyGenerator生成密钥种子的时候,windows和linux上会产生不一致。//例如:KeyGen…

  • js ajax 跨域问题 解决方案[通俗易懂]

    js ajax 跨域问题 解决方案[通俗易懂]什么是跨域问题?跨域问题来源于JavaScript的”同源策略”,即只有协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题。查看浏览器开发者工具Console报错:Failedtoloadhttp://a.a.com:8080/A/FromServlet?userName=123:No’Access-Control-Allow-Origi.

  • 学习PetShop3.0(4)购物车

    学习PetShop3.0(4)购物车终于到购物车了,在看这个之前应该已经明白了第三篇的那个模型,这样购物车基本也就明白了。来看一下ShoppingCart.aspx这个页。当你看好了一个宠物,比如可爱的GoldenRetriever,嘿嘿,那就点addtocart按钮,这时就会跳到ShoppingCart.aspx,url里带了这个宠物的id号,根据该id号程序将该宠物放到cart里面。然后你可以再去挑别的宠物,比如一只猫(……

    2022年10月16日
  • 数据库副本的自动种子设定(自增长)

    数据库副本的自动种子设定(自增长)

    2021年11月24日
  • vue-cli脚手架的.babelrc文件 详解

    vue-cli脚手架的.babelrc文件 详解

    2021年10月11日
  • 美国目前最流行的五种量化交易模型[通俗易懂]

    美国目前最流行的五种量化交易模型[通俗易懂]01、股票多空策略股票多空策略(EquityLong/Short),即买一些股票,通过融券的方式去卖空一些股票,然后再用一些股指期货进行对冲。这是国际上主流的HedgeFund所用的量化策略,据知名数据商Eurekahedge的统计数据,在国际对冲基金中长期占比第一(一直超过30%)。比如2011年获得美国量化基金业评比第一名的贝莱德“32Cap全球对冲基金产品”使用的就是经典的多空策略…

发表回复

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

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