java - 如何获取单独的子节点值

标签 java xml soap

    <hotel hotelCode="FR000715" hotelRating="3STR">
        <hotelName>Kyriad Paris Porte D'Ivry</hotelName>
        <hotelChain code="">Simply Hotels</hotelChain>
        <city code="FRIVS" standard="LOCODE">Ivry-Sur-Seine</city>
        <geoLocalization latitude="48.819761" longitude="2.376128"/>
        <address>1-11, Rue René Villars 94200 Ivry-Sur-Seine</address>
        <phone>00 33 1 46 71 00 17</phone>
        <fax>00 33 1 46 58 91 00</fax>
        <email>email@test.com</email>
    </hotel>

我想获取hotelCodehotelRatinghotelNamecitygeoLocalization 从上面的代码

这是我的代码:

        DOMParser parser = DOMParser.getInstance();
        parser.parse(responseStr);
        Document document = parser.getDocument();
        NodeList response = document.getElementsByTagName("hotel");

        for (int hd = 0; hd < response.getLength(); hd++) {

            for (int j = 0; j < response.item(hd).getChildNodes().getLength(); j++) {
                Node referenceChild = response.item(hd).getChildNodes().item(j);

                if (null != referenceChild.getLocalName()) {
                    if (referenceChild.getLocalName().equals("hotelName")) {
                        hotelName = referenceChild.getFirstChild().getNodeValue();
                    }
                }
            }
        }

只有我只能接收hotelName。但不是其他标签。我想分别获取所有子节点值。

最佳答案

您可以使用“element.getAttribute”

for (int hd = 0; hd < response.getLength(); hd++) {
        Node nNode = response.item(hd);
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
              Element eElement = (Element) nNode;
              hotelCode=eElement.getAttribute("hotelCode");
              hotelRating=eElement.getAttribute("hotelRating");
            for (int j = 0; j < response.item(hd).getChildNodes().getLength(); j++) {
                Node referenceChild = response.item(hd).getChildNodes().item(j);

                if (null != referenceChild.getLocalName()) {
                    if (referenceChild.getLocalName().equals("hotelName")) {
                        hotelName = referenceChild.getFirstChild().getNodeValue();
                    }
                    else if (referenceChild.getLocalName().equals("city")) {
                        city = referenceChild.getFirstChild().getNodeValue();
                    }
                    else if (referenceChild.getLocalName().equals("geoLocalization")) {
                        if (referenceChild.getNodeType() == Node.ELEMENT_NODE) {
                            Element eChildElement = (Element) referenceChild;
                            latitude=eChildElement.getAttribute("latitude");
                            longitude=eChildElement.getAttribute("longitude");
                        }
                    }
                }
            }
            }
        }

更多详情请查看此链接 https://www.tutorialspoint.com/java_xml/java_dom_parse_document.htm

关于java - 如何获取单独的子节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47746900/

相关文章:

java - 有没有一种很好的方法来使用流过滤列表并获取项目列表或如果没有项目通过过滤器则获取 null ?

java - 国际象棋游戏的评估函数是否考虑了棋盘上的所有棋子?

c# - 如何摆脱子元素中的空命名空间 "xmlns="""?

c# - 如何从 XML 文件中获取所有文本节点

xml - 使用分层 xml 在 SSRS 中创建分组 tablix

android - 如何从 php webservice 在 android 应用程序 arraylist 中解析

java - Grails + Java : Attempting to perform implementation of MessagePostProcessor

java - com.spotify.docker.client.DockerRequestException : Request error: DELETE unix://localhost:80/v1. 12/容器/...:409

ios - iOS 中的 JSON 解析错误

java - 在 WSDL 中导入命名空间导致 JAXP09020006 : The argument 'systemId' can not be null