根据标签名递归读取xml字符串中element

工具类:

java 复制代码
  /**
   * 根据标签名递归读取xml字符串中element
   * 例:
   * String xml =
   * "<req>\n" +
   * "<tag1></tag1>\n" +
   * "<tag2>\n" +
   * "  <tag4></tag4>\n" +
   * "</tag2>\n" +
   * "<tag3></tag3>\n" +
   * "</req>";
   * <p>
   * element(xml) => 获得 req element
   * element(xml, "tag1") => 获得 tag1 element
   * element(xml, "tag2", "tag4") => 获得 tag4 element
   *
   * @param xml
   * @param nodes
   * @return
   */
  public static Element element(String xml, String... nodes) {
    try {
      Document document = DocumentHelper.parseText(xml);
      Element element = document.getRootElement();
      for (String node : nodes) {
        element = element.element(node);
      }
      return element;
    } catch (DocumentException e) {
      e.printStackTrace();
    }

    return null;
  }

测试:

java 复制代码
public class Main {
    public static void main(String[] args) {
        String xmlString = "<books><category name='Fiction'><book id='1'>Harry Potter</book></category></books>";

        // 获取 books 元素
        Element booksElement = element(xmlString);
        System.out.println("Books: " + booksElement.asXML());

        // 获取 category 元素
        Element categoryElement = element(xmlString, "category");
        System.out.println("Category: " + categoryElement.asXML());

        // 获取 book 元素
        Element bookElement = element(xmlString, "category", "book");
        System.out.println("Book: " + bookElement.asXML());
    }

    // 之前的 element 函数
    public static Element element(String xml, String... nodes) {
        // ...
    }
}

输出:

java 复制代码
Books: <books><category name="Fiction"><book id="1">Harry Potter</book></category></books>
Category: <category name="Fiction"><book id="1">Harry Potter</book></category>
Book: <book id="1">Harry Potter</book>
相关推荐
AI进化营-智能译站4 小时前
ROS2 C++开发系列17-多线程驱动多传感器|chrono高精度计时实现机器人同步控制
java·c++·ai·机器人
天若有情6737 小时前
程序员原创|借鉴JS事件冒泡,根治电脑文件混乱的“冒泡整理法”
开发语言·javascript·windows·ecmascript·电脑·办公·日常
qq_589568107 小时前
springbootweb案例,出现访问 http://localhost:8080/list 一直处于浏览器运转阶段
java·网络协议·http·list·springboot
JAVA面经实录9178 小时前
计算机基础(完整版·超详细可背诵)
java·linux·数据结构·算法
特种加菲猫8 小时前
继承,一场跨越时空的对话
开发语言·c++
AC赳赳老秦8 小时前
知识产权辅助:用 OpenClaw 批量生成专利交底书 / 软著申请材料,自动校验格式与内容合规性
java·人工智能·python·算法·elasticsearch·deepseek·openclaw
FYKJ_20109 小时前
springboot校园兼职平台--附源码02041
java·javascript·spring boot·python·eclipse·django·php
玩转单片机与嵌入式9 小时前
玩转边缘AI(TInyML):需要掌握的C++知识汇总!
开发语言·c++·人工智能
茉莉玫瑰花茶10 小时前
Qt 信号与槽 [ 1 ]
开发语言·数据库·qt