dom解析xml



    /**
     * XML读取
     *
     * @param inMap
     * @return string数字:0-表名;1-表字段串
     */
    public static String[] parserXml(Map<String, String> inMap, String table) {
        String[] returnArray = new String[2];
        StringBuilder parser = new StringBuilder();
        String parentName = "";
        String fileName = inMap.get("IMPORT_MAP_FILE");

         //fileName就是xml的路径

        File inputXml = new File(fileName);
        SAXReader saxReader = new SAXReader();
        try {
            Document document = saxReader.read(inputXml);
            Element firstElement = document.getRootElement();
            for (Iterator i = firstElement.elementIterator(); i.hasNext();) {
                Element secondElement = (Element) i.next();
                if (StringUtils.isEmpty(table)) {
                    for (Iterator j = secondElement.elementIterator(); j.hasNext();) {
                        Element node = (Element) j.next();
                        if (StringUtils.isEmpty(parentName)) {// 获取入库表名
                            parentName = node.getParent().getName();
                        }
                        parser.append(node.getName() + ImportCode.AND_CODE + node.getText() + ImportCode.AND_CODE);
                        if (node.attribute(ImportCode.TYPE_CODE) != null) {
                            parser.append(node.attribute(ImportCode.TYPE_CODE).getText());
                        }
                        parser.append(ImportCode.SLIPT_CODE);
                    }
                }
                else if (table.equals(secondElement.getName())) {// 读取指定表的字段值
                    for (Iterator j = secondElement.elementIterator(); j.hasNext();) {
                        Element node = (Element) j.next();
                        if (StringUtils.isEmpty(parentName)) {// 获取入库表名
                            parentName = node.getParent().getName();
                        }
                        parser.append(node.getName() + ImportCode.AND_CODE + node.getText() + ImportCode.AND_CODE);
                        if (node.attribute(ImportCode.TYPE_CODE) != null) {
                            parser.append(node.attribute(ImportCode.TYPE_CODE).getText());
                        }
                        parser.append(ImportCode.SLIPT_CODE);
                    }
                    break;
                }
            }
            returnArray[0] = parentName;
            returnArray[1] = parser.toString();
        }
        catch (DocumentException e) {
            e.printStackTrace();
            throw new EsfException("", "解析入库映射文件异常:" + e);
        }
        return returnArray;
    }



<?xml version="1.0" encoding="gb2312"?>
<ALways>
    <TF_A_UDPUNICARD_TMP>
        <FETCHIMORPT_FILE_CODE type="BigDecimal"></FETCHIMORPT_FILE_CODE>
        <ACCOUNTS_CODE type="BigDecimal"></ACCOUNTS_CODE>
        <ACCOUNTS_DATE type="String"></ACCOUNTS_DATE>
        <ACCOUNTS_VER type="String"></ACCOUNTS_VER>
        <SERVICE_ORDER type="String">5</SERVICE_ORDER>
        <UDP_ORDER type="String"></UDP_ORDER>
        <PAY_ORG_CODE type="String">6</PAY_ORG_CODE>
        <PAY_CHANNEL_CODE type="String">7</PAY_CHANNEL_CODE>
        <PAY_ORG_ORDER type="String">1</PAY_ORG_ORDER>
        <PAY_CHANNEL_ORDER type="String">8</PAY_CHANNEL_ORDER>
        <PAY_AMOUNT type="BigDecimal">2</PAY_AMOUNT>
        <PAY_DATE type="Timestamp">9</PAY_DATE>
        <NOTIFY_DATE type="Timestamp">10</NOTIFY_DATE>
        <FILE_RESOURCE type="String"></FILE_RESOURCE>
        <ACCOUNT_TYPE type="String"></ACCOUNT_TYPE>
    </TF_A_UDPUNICARD_TMP>
</ALways>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值