XML : DOM - Accessing inner elements of the same name in java

I have an xml file that has many elements and I want to try get the elements in the third element. My problem is that when I'm calling doc.getElementsByTagName("dict") It gets every element that is called dict.

Here is the code:

  try {          File inputFile = new File("itunes2.xml");          DocumentBuilderFactory dbFactory = DocumentBuilderFactory                  .newInstance();          DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();          Document doc = dBuilder.parse(inputFile);          doc.getDocumentElement().normalize();          System.out.println("Root element :"                  + doc.getDocumentElement().getNodeName());          NodeList nList = doc.getElementsByTagName("dict");          System.out.println("----------------------------");          for (int temp = 0; temp < nList.getLength(); temp++) {              Node nNode = nList.item(temp);              System.out.println("\nCurrent Element :" + nNode.getNodeName());              if (nNode.getNodeType() == Node.ELEMENT_NODE) {                  Element eElement = (Element) nNode;                  System.out.println("Major Version : "                          + eElement.getElementsByTagName("integer").item(0)                                  .getTextContent());                  System.out.println("Minor Version : "                          + eElement.getElementsByTagName("integer").item(0)                                  .getTextContent());                  System.out.println("Application version : "                          + eElement.getElementsByTagName("string").item(0)                                  .getTextContent());                  System.out.println("Features : "                          + eElement.getElementsByTagName("integer").item(2)                                  .getTextContent());                  System.out.println("Music Folder : "                          + eElement.getElementsByTagName("string").item(1)                                  .getTextContent());                  System.out.println("Library Persistent ID : "                          + eElement.getElementsByTagName("string").item(2)                                  .getTextContent());              }          }      } catch (Exception e) {          e.printStackTrace();      }  }    

XML:

  <?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  <plist version="1.0">  <dict>  <key>Major Version</key><integer>1</integer>  <key>Minor Version</key><integer>1</integer>  <key>Application Version</key><string>10.1</string>  <key>Features</key><integer>5</integer>  <key>Show Content Ratings</key><true/>  <key>Music Folder</key><string>file://localhost//Thomts/Holly/data/My%20Music/iTunes/iTunes%20Music/</string>  <key>Library Persistent ID</key><string>29E12A03204E0721</string>  <key>Tracks</key>  <dict>      <key>324</key>      <dict>          <key>Track ID</key><integer>324</integer>          <key>Name</key><string>Talk Dirty To Me</string>          <key>Artist</key><string>Poison</string>          <key>Composer</key><string>Poison</string>          <key>Album</key><string>The Best Of Poison: 20 Years Of Rock</string>          <key>Genre</key><string>Metal</string>          <key>Kind</key><string>AAC audio file</string>          <key>Size</key><integer>3698203</integer>          <key>Total Time</key><integer>224866</integer>          <key>Disc Number</key><integer>1</integer>          <key>Disc Count</key><integer>1</integer>          <key>Track Number</key><integer>1</integer>          <key>Track Count</key><integer>18</integer>          <key>Year</key><integer>1986</integer>          <key>Date Modified</key><date>2008-08-07T15:16:57Z</date>          <key>Date Added</key><date>2008-08-07T15:17:17Z</date>          <key>Bit Rate</key><integer>128</integer>          <key>Sample Rate</key><integer>44100</integer>          <key>Play Count</key><integer>6</integer>          <key>Play Date</key><integer>3378486192</integer>          <key>Play Date UTC</key><date>2011-01-22T03:23:12Z</date>          <key>Compilation</key><true/>          <key>Sort Album</key><string>Best Of Poison: 20 Years Of Rock</string>          <key>Persistent ID</key><string>29E12A03204E0873</string>          <key>Track Type</key><string>File</string>          <key>Location</key><string>file://localhost//Thomts/Holly/data/My%20Music/iTunes/iTunes%20Music/Compilations/The%20Best%20Of%20Poison_%2020%20Years%20Of%20Rock/01%20Talk%20Dirty%20To%20Me.m4a</string>          <key>File Folder Count</key><integer>4</integer>          <key>Library Folder Count</key><integer>1</integer>      </dict>    

And it outputs this:

  Root element :plist    Current Element :dict  Major Version : 1  Minor Version : 1  Application version : 10.1  Features : 5  Music Folder :  file://localhost//Thomts/Holly/data/My%20Music/iTunes/iTunes%20Music/  Library Persistent ID : 29E12A03204E0721    Current Element :dict  Major Version : 324  Minor Version : 324  Application version : Talk Dirty To Me  Features : 224866  Music Folder : Poison  Library Persistent ID : Poison    

As you can see it gets the correct information for the first element and then the wrong info for the second element. I would like to know how to get all the information within a third dict tag so that I can get all information for a song e.g. Track ID, Name, Artist etc..

No comments:

Post a Comment