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

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 单片机 如何进行数据存储
  • ¥20 配置UGM库出现问题
  • ¥15 把Excel导入MATLAB显示错误怎么解决?
  • ¥15 Java中消息和缓存如何使用
  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站