dom4j解析xml

1.XML
<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<salaries>
  <salary>
    <year>2019</year>
     <month>10</month>
     <number>admin</number>
     <GZT001>1000</GZT001>
     <GZT002>10</GZT002>
     <GZT003>20</GZT003>
     <GZT004>30</GZT004>
     <GZT005>40</GZT005>
     <GZT006>50</GZT006>
     <GZT007>60</GZT007>
  </salary>
</salaries>

2.解析代码
public class SalaryInfo
{
  private String year;
  private String month;
  private String userNumber;

  private Map<String, String> shrMap = Maps.newHashMap();

  public String getYear()
  {
    return year;
  }

  public void setYear(String year)
  {
    this.year = year;
  }

  public String getMonth()
  {
    return month;
  }

  public void setMonth(String month)
  {
    this.month = month;
  }

  public String getUserNumber()
  {
    return userNumber;
  }

  public void setUserNumber(String userNumber)
  {
    this.userNumber = userNumber;
  }

  public Integer getYearMonth()
  {
    return NumberUtils.parseInt(year) * 100 + NumberUtils.parseInt(month);
  }

  @SuppressWarnings ("unchecked")
  public static List<SalaryInfo> parse(String xml) throws ParameterParseException
  {
    if (StringUtils.isBlank(xml))
      throw new ParameterParseException("参数为空。");

    try
    {
      Element root = DocumentHelper.parseText(xml).getRootElement();
      if (root == null)
        return Collections.emptyList();

      List<SalaryInfo> salaryInfoList = new ArrayList<SalaryInfo>();
      Iterator<Element> iterator = root.elementIterator("salary");

      while (iterator.hasNext())
      {
        Element salaryElement = iterator.next();
        List<Element> elements = salaryElement.elements();

        SalaryInfo salaryInfo = new SalaryInfo();
        salaryInfo.setYear(salaryElement.elementTextTrim("year"));
        salaryInfo.setMonth(salaryElement.elementTextTrim("month"));
        salaryInfo.setUserNumber(salaryElement.elementTextTrim("number"));

        for (Element element : elements)
        {
          if (StringUtils.equals(element.getName(), "year") || StringUtils.equals(element.getName(), "month")
              || StringUtils.equals(element.getName(), "number"))
            continue;

          salaryInfo.shrMap.put(element.getName(), element.getTextTrim());
        }

        salaryInfoList.add(salaryInfo);
      }

      return salaryInfoList;
    }
    catch (Exception e)
    {
      throw new ParameterParseException(null, "解析 XML 出错", e);
    }
  }
}
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值