XML child node attribute value

前端 未结 3 896
孤独总比滥情好
孤独总比滥情好 2020-12-16 08:05

I\'m trying to read xml file, ex :


    FEED TITLE
    5467sdad98787ad3149878sasda
    

        
3条回答
  •  北海茫月
    2020-12-16 08:26

    As pointed out, doesn't have any child so instead of:

    (contento.item(0)).getFirstChild().getAttributes()
    

    You should treat the Node as Element and use getAttribute(String), something like this:

    ((Element)contento.item(0)).getAttribute("madeIn")
    

    Here is a modified version of your code (it's not the most robust code I've written):

    InputStream inputStream = new ByteArrayInputStream(xml.getBytes());
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(inputStream);
    doc.getDocumentElement().normalize();
    System.out.println("Root element " + doc.getDocumentElement().getNodeName());
    NodeList nodeLst = doc.getElementsByTagName("entry");
    System.out.println("Information of all entries");
    
    for (int s = 0; s < nodeLst.getLength(); s++) {
    
        Node fstNode = nodeLst.item(s);
    
        if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
    
            Element fstElmnt = (Element) fstNode;
    
            NodeList title = fstElmnt.getElementsByTagName("title").item(0).getChildNodes();
            System.out.println("Title : " + (title.item(0)).getNodeValue());
    
            NodeList id = fstElmnt.getElementsByTagName("id").item(0).getChildNodes();
            System.out.println("Id: " + (id.item(0)).getNodeValue());
    
            Node tempiNode = fstElmnt.getElementsByTagName("tempi").item(0);
            System.out.println("Type : " + ((Element) tempiNode).getAttribute("type"));
    
            Node contento = tempiNode.getChildNodes().item(0);
            System.out.println("Made in : " + ((Element) contento).getAttribute("madeIn"));
        }
    }
    

    Running it on your XML snippet produces the following output:

    Root element entry
    Information of all entries
    Title : FEED TITLE
    Id: 5467sdad98787ad3149878sasda
    Type : application/xml
    Made in : USA
    

    By the way, did you consider using something like Rome instead?

提交回复
热议问题