2015-11-24 2 views
0

Я пытаюсь выполнить цикл через xml и извлечь значения и сохранить его в mysql, используя rest. это то, что у меня есть до сих пор. Но его единственное извлечение первой строки, которая имеет значение songIts, добавляющего в базу данных, но id, как добавить два за раз.Loop xml и сохраняются в базе данных java

NodeList artistList = (NodeList)xPath.evaluate("/plist/dict/dict/dict/string[@rollno='artist']", root, XPathConstants.NODESET); 
     for (int i = 0; i < artistList.getLength(); ++i) { 
      Element e = (Element) artistList.item(i); 
      artist= e.getFirstChild().getNodeValue(); 


      book.setIsbn(artist); 
      book.setName(song); 



      returnCode = "200"; 
      em = Resource.getEntityManager(); 
     } 

Это XML, который я пытаюсь разобрать с помощью XPath я хотел бы, чтобы извлечь все rollno = «песня» и сохраняются их один за другим, любой совет или помощь будет означать много .THANKS

<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 rollno="song">Brighter Than Sush</string> 
      <key>Artist</key> 
      <string rollno="artist">Aqualug</string> 
      <key>Album Artist</key> 
      <string>Aqualung</string> 
      <key>Album</key> 
      <key>Track ID</key> 
      <integer>1288</integer> 
      <key>Name</key> 
      <string rollno="song">james</string> 
      <key>Artist</key> 
      <string rollno="artist">martha</string> 
      <key>Album Artist</key> 
      <string>Aqualung</string> 
      <key>Album</key> 
     </dict> 


     </dict> 
    </dict> 
</plist> 
+0

, так что вы получаете только Aqualug? – AbtPst

+0

@abtpst точно, и я бы хотел получить aqualug и james .. – Sandra

+0

ну ваш xpath кажется правильным. вы уверены, что получаете только 1 значение в списке? вы пробовали распечатать художника в цикле? – AbtPst

ответ

1

Ваш код XPath/NodeList верен. Поскольку вы получили последнее значение XML, либо вы делаете вещи после цикл for (маловероятно), либо вы перезаписываете поля того же объекта, созданного после до.

for (int i = 0; i < artistList.getLength(); ++i) { 
     Element e = (Element) artistList.item(i); 
     artist= e.getFirstChild().getNodeValue(); 

     book = new Book(); // A new object here 
     book.setIsbn(artist); 
     book.setName(song); 
     ... // Process book 
    } 

Для хорошего заказа вы можете выбрать e.getTextContent().