java - 使用 Java 计算 XML 文件中标签的重复次数

标签 java xml

我有一个类似于下面的 XML 文件:

<rec>
<v001>001</v001> 
<v002>2012609272311</v002>
<v003>616.890231</v003>
<v005>7</v005>
<v006>m</v006>
<v007>^a115001^b1^c1^d20100000^e2^fOvernight^m1</v007>
<v007>^a115002^b2^c1^d20100000^e1^m2</v007>
<v007>^a115003^b3^c1^d20100000^e1^m3</v007>
<v007>^a115004^b4^c1^d20100000^e1^m4</v007>
<v007>^a115005^b5^c1^d20100000^e1^m5</v007>
<v007>^a115006^b6^c1^d20100000^e1^m6</v007>
<v016>ROCHA, Ruth Mylius</v016>
<v018>Enfermagem em Saúde Mental</v018>
</rec>

“rec”标签与注册表匹配,我需要计算 v007 标签在每个记录中重复的次数。我正在使用以下功能:

static private int getCount(Node parentNode, String childName) {
int qtdEx = 0;
NodeList nList = parentNode.getChildNodes();
for (int i = 0; i < nList.getLength(); i++) {
    Node n = nList.item(i);
    String name = n.getNodeName();
    if (name != null && name.equals(childName)) {
        return qtdEx++;
    }
}
return 0;

}

这个函数只返回0,我测试如下:

NodeList nList = doc.getElementsByTagName("rec");

for (int i = 0; i < nList.getLength(); i++) {
        Node node = nList.item(i);
        List<Object> columns = null;                                              
        columns = Arrays.asList(getCount(node, "v007"));
        }

如果有人可以帮忙,谢谢!

最佳答案

原因是由于String name = n.getNodeName();会将v001赋值给name,然后当遇到v002,程序将停止并返回。

您可以更改为以下内容:

 private static int getCount(Node parentNode, String childName) {
   int qtdEx = 0;
   NodeList nList = parentNode.getChildNodes();
   for (int i = 0; i < nList.getLength(); i++) {
       Node n = nList.item(i);
       String name = n.getNodeName();
       if("v007".equals(name)){
          qtdEx++;
       }
   }
return qtdEx;

}

事实上,如果你使用xPath dom4j ,事情会更简单:

List list = doc.selectNodes("//rec/v007");
int count = list.size();

关于java - 使用 Java 计算 XML 文件中标签的重复次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51339914/

相关文章:

java - 从 Java 插入时如何在 q 中获取 Date 对象

java - 最后捕获或返回实例或空引用

c# - 如何通过页码访问 OpenXML 内容?

xml - 循环 XML 并返回元素值

java - 让Android XML阅读器只读取XML文件的一部分

java - 拦截器API : in a classic java project

Java:将毫秒转换为 HH:MM:SS

java - 在线java编译器如何工作?

java - Python 相当于 Java 的 Class.getResource

javascript - 我如何使用 jquery ajax() 和 $.when() 方法从 .xml 文档获取 xml 节点文本/值