未知昵称 2019-06-13 13:30 采纳率: 66.7%
浏览 630
已采纳

java 用dom的方式解析xml文件,子节点下有相同名字的子节点?

如下图所示第一级含有1,2,3,4 等多个节点,
1下面含有1.1,1.2,1.3,1.4,1.5 等多个节点,
1.2下面含有1.2.1,1.2.2 等多个节点,
解析代码如下:
标注的此处有问题的,testSublist的长度,包括了1.1到1.5和1.2.1到1.2.2,也就是也就是统计出了1下面所有出现了IMPLEMENTATION-DATA-TYPE-ELEMENT,现在我只希望,获得的长度为5,也就是1.1到1.5,也就是一级一级获取下去??

NodeList testList = doc.getElementsByTagName("IMPLEMENTATION-DATA-TYPE");
for(int i = 0; i < impList.getLength(); i++) {
            Element testElement = (Element) testList.item(i);   
            NodeList testSublist=testElement.getElementsByTagName("IMPLEMENTATION-DATA-TYPE-ELEMENT"); //此处有问题
for (int ii = 0; ii < testSublist.getLength(); ii++) {
}
}

图片说明

  • 写回答

3条回答 默认 最新

  • Next66 2019-06-13 14:44
    关注

    兄弟,还在纠结这个问题呀;
    自己实现个getChildrenByTagName,再结合我上次给你的代码
    看下面代码:

        public static List<Node> getChildrenByTagName(Node nl, String name) {
            List<Node> nodeList = new ArrayList<Node>();
            for (Node child = nl.getFirstChild(); child != null; child = child.getNextSibling()) {
                if(child.getNodeType() == Node.ELEMENT_NODE && 
                    name.equals(child.getNodeName())){
                    nodeList.add(child);
                }
            }
            return nodeList;
        }
    
            public static void main(String[] args) {
    
            DocumentBuilderFactory docbf = DocumentBuilderFactory.newInstance();
            try {
                DocumentBuilder docb = docbf.newDocumentBuilder();
                Document doc = docb.parse("test.xml");
                List<Node> elements = getChildrenByTagName(doc, "IMPLEMENTATION-DATA-TYPE");
                System.out.println(elements);
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } catch (SAXException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 根据会员信息表绘制堆积柱状图
  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统
  • ¥100 rtmpose姿态评估
  • ¥15 通联支付网上收银统一下单接口
  • ¥15 angular有偿编写,