java - 使用java获取XML的某些值

标签 java xml dom nodelist

我的 XML 如下。如果 EServiceId 是“ESRVC2”,如何使用 Java 循环并检索标签 ClientInfo 的值?

<EServiceInfo>
    <EServiceId>ESRVC1</EServiceId>
    <Clients>
        <ClientInfo>
            <ClientEntityID>T1511111F</ClientEntityID>
            <ClientEntityType>UEN</ClientEntityType>
        </ClientInfo>
        <ClientInfo>
            <ClientEntityID>190000001W</ClientEntityID>
            <ClientEntityType>UEN</ClientEntityType>
        </ClientInfo>
    </Clients>
</EServiceInfo>
<EServiceInfo>
    <EServiceId>ESRVC2</EServiceId>
    <Clients>
        <ClientInfo>
            <ClientEntityID>T1522222F</ClientEntityID>
            <ClientEntityType>UEN</ClientEntityType>
        </ClientInfo>
        <ClientInfo>
            <ClientEntityID>190000002W</ClientEntityID>
            <ClientEntityType>UEN</ClientEntityType>
        </ClientInfo>
    </Clients>
</EServiceInfo>

最佳答案

这是我尝试过的答案。但看起来它会返回所有 4 个 ClientInfo。

NodeList nEserviceInfoList = doc.getElementsByTagName("EServiceInfo");
        for (int i = 0; i < nEserviceInfoList.getLength(); i++) {

            Node nNode = nEserviceInfoList.item(i);
            System.out.println("\nCurrent Element: " + nNode.getNodeName());

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element elem = (Element) nNode;
                Node node1 = elem.getElementsByTagName("EServiceId").item(0);
                String nEServiceId = node1.getTextContent();

                System.out.println("EServiceId: " + nEServiceId);

                NodeList nClientList = doc.getElementsByTagName("ClientInfo");

                for (int j = 0; j < nClientList.getLength(); j++) {

                    Node nClientNode = nClientList.item(j);

                    System.out.println("\nCurrent Element: " + nClientNode.getNodeName());
                    if (nClientNode.getNodeType() == Node.ELEMENT_NODE) {
                        Element elemClient = (Element) nClientNode;
                        Node node3 = elemClient.getElementsByTagName("ClientEntityID").item(0);
                        String nClientEntityID = node3.getTextContent();

                        Node node4 = elemClient.getElementsByTagName("ClientEntityType").item(0);
                        String nClientEntityType = node4.getTextContent();

                        System.out.println("ClientEntityID: "+ nClientEntityID);
                        System.out.println("ClientEntityType: "+ nClientEntityType);

                    }
                }
            }
        }

关于java - 使用java获取XML的某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62046544/

相关文章:

c# - 如何在 C# 中使用 XML 前缀?

c# - 是否可以使用 C# 检测 xml 节点是否存在?

javascript - 阻止 HTML 元素被修改

javascript - 将 html(text) 附加到元素而不影响同级元素?

java - 使用 XPATH 表达式和 Java 解析 XML 文件

java - Android 搜索 ListView 使用 EditText 从 JSON 复制项目

java - 使用 BufferedReader (readLine()) 检查更多值时如何停止 NullPointerException

java - java中的属性是什么意思?

java - Java 中的 XSLT 转换可以输出无效标签警告吗

java - 如何 "minify"数组 - Java