मैं इस .xml फ़ाइल को पार्स करने के लिए कोशिश कर रहा हूँ, जिसका मैंने गीत नाम निकालने की कोशिश की है।

public class StudentDOMParser {

    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse("itunes3.xml");

        Element root = document.getDocumentElement();
        System.out.println(root.getNodeName());
        System.out.println("============================");

        NodeList nList = document.getElementsByTagName("dict");

        //  NodeList xList = document.getElementsByTagName("student");
        // Iterate through each employee and print their details
        for (int i = 0; i < nList.getLength(); i++) {

            // Extract each individual employee
            Node node = nList.item(i);

            if (node.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) node;  
                System.out.println("song name : " + eElement.getElementsByTagName("string").item(0).getTextContent());
                //  System.out.println("song name : " + eElement.getFirstChild().getTextContent());
            }
            //System.out.println("college name : " + eElement.getElementsByTagName("Track").item(0).getTextContent());
        }
    }
}

और यहाँ .xml है

<plist version="1.0">
   <dict>
      <key>Major Version</key>
      <integer>1</integer>
      <key>Application Version</key>
      <string>7.0.2</string>
      <key>Show Content Ratings</key>
      <true />
      <key>Tracks</key>
      <dict>
         <key>1288</key>
         <dict>
            <key>Track ID</key>
            <integer>1288</integer>
            <key>Name</key>
            <string>Brighter Than Sunshine</string>
            <key>Artist</key>
            <string>Aqualung</string>
            <key>Album Artist</key>
            <string>Aqualung</string>
            <key>Album</key>
         </dict>
      </dict>
   </dict>
</plist> 

सुझाव है कि मैं गीत का नाम पाने के लिए इसे कैसे पार करूंगा जो "ब्राइटन थान सनशाइन" है

0
Sandra 20 नवम्बर 2015, 18:25

2 जवाब

सबसे बढ़िया उत्तर

आपके द्वारा खोजा जा रहा डेटा प्राप्त करने के लिए XPath का उपयोग करना अधिक कुशल विकल्प हो सकता है।

निम्न उदाहरण एक्सपीएम से सभी प्लास्ट / तानाशाह / तानाशाही / तानाशाही / स्ट्रिंग प्राप्त करने के लिए XPath का उपयोग करता है।

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();

    Document document = builder.parse(ResourceUtils.getFile("/itunes.xml").getAbsolutePath());

    Element root = document.getDocumentElement();
    System.out.println(root.getNodeName());
    System.out.println("============================");

    XPath xPath = XPathFactory.newInstance().newXPath();
    NodeList nList = (NodeList)xPath.evaluate("/plist/dict/dict/dict/string", root, XPathConstants.NODESET);
    for (int i = 0; i < nList.getLength(); ++i) {
        Element e = (Element) nList.item(i);
        String value = e.getFirstChild().getNodeValue();
        logger.info("string:" + value);
    }

इस से आउटपुट है

plist
============================
Nov 20, 2015 4:40:59 PM demo.TestCode testXml
INFO: string:Brighter Than Sunshine
Nov 20, 2015 4:41:00 PM demo.TestCode testXml
INFO: string:Aqualung
Nov 20, 2015 4:41:00 PM demo.TestCode testXml
INFO: string:Aqualung
0
Mike Murphy 20 नवम्बर 2015, 16:45
public class CustomXMLParse {
    public static void main(String[] args) {

        try {
            FileInputStream file = new FileInputStream(new File("/home/amitparashar/Documents/itunes3.xml"));
            DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = builderFactory.newDocumentBuilder();
            Document xmlDocument = builder.parse(file);
            XPath xPath = XPathFactory.newInstance().newXPath();
            String expression = "/plist/dict/dict/dict/string[1]";
            System.out.println(expression);
            NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
            for (int i = 0; i < nodeList.getLength(); i++) {
                System.out.println(nodeList.item(i).getFirstChild().getNodeValue());
            }
        } catch (Exception e) {

        }

    }
}
0
Amit Parashar 20 नवम्बर 2015, 16:46