XML parsing in java with xpath

前端 未结 1 939
春和景丽
春和景丽 2020-12-22 10:57

I am trying to print out some data so my code is

 private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY = DocumentBuilderFactory.newInstance()         


        
相关标签:
1条回答
  • 2020-12-22 11:15

    Try something like this:

    private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY = DocumentBuilderFactory.newInstance();
    private static final XPathFactory XPATH_FACTORY = XPathFactory.newInstance();
    
    public static void parseXml(String urlPath) throws Exception {
        URL url = new URL(urlPath);
        URLConnection connection = url.openConnection();
        DocumentBuilder db = DOCUMENT_BUILDER_FACTORY.newDocumentBuilder();
    
        final Document document = db.parse(connection.getInputStream());
        XPath xPathEvaluator = XPATH_FACTORY.newXPath();
    
        NodeList tracksinfoNodes = (NodeList) xPathEvaluator.compile("lfm/results/trackmatches/track").evaluate(
                document, XPathConstants.NODESET);
        for (int i = 0; i < tracksinfoNodes.getLength(); i++) {
            Node trackNameNode = tracksinfoNodes.item(i);
    
            NodeList childs = trackNameNode.getChildNodes();
    
            for (int j = 0; j < childs.getLength(); j++) {
                Node n = childs.item(j);
    
                if (!n.getNodeName().equals("#text")) {
                    System.out.println(String.format("%s: %s", n.getNodeName(), n.getTextContent()));   
                }
            }
    
            System.out.println("==============");
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题