2012-03-18 22 views
1

XMLを使用してJavaでアプリケーションを作成しています。jdomを使用して子要素の属性を取得する方法

XML-

<?xml version="1.0" encoding="UTF-8"?> 
<songlist id="slist"> 
    <song name="Club Can't Handle Me" path="E:/Google Chrome Downloads/club cant handle me.mp3" artist="Flo Rida feat. David Guetta" album="The Only One" /> 
    <song name="Call It What You Want" artist="Foster the People" path="E:\Google Chrome Downloads\call it what you want.mp3" album="Torches" /> 
    <song name="Break Your Heart (Remix) Ft. Ludacris" artist="Taio Cruz" path="E:\Google Chrome Downloads\Break your heart.mp3" album="Rockstarr" /> 
    <song name="Burn It To The Ground" artist="Nickelback" path="E:\Google Chrome Downloads\Burn It To The Ground.mp3" album="Dark Horse" /> 
    <song name="Levels" artist="Avicii" path="E:\Google Chroome Downloads\Avicii - Levels.mp3" album="" /> 
    <song name="Beautiful" artist="Akon" path="E:\Google Chrome Downloads\Beautiful.mp3" album="http://www.urbanascor.com" /> 
    <song name="Bumpy Ride" artist="" path="E:\Google Chrome Downloads\bumpy ride.mp3" album="" /> 
</songlist> 

イムは、子要素(曲)の属性を取得しようとしているが、それを行うことができないイム。私はJDOMを使っています。

Javaは私を助けてください

public class Opener extends WindowAdapter{ 
     @Override public void windowOpened(WindowEvent e){ 
      try{ 
      SAXBuilder builder = new SAXBuilder(); 
      File xmlFile = new File("E:/Yash programs/mp3/list.xml"); 
      Document doc = (Document) builder.build(xmlFile); 
      Element rootNode = doc.getRootElement(); 
      List l = rootNode.getChildren(); 
      for(int i = 1;i<=l.size();i++){ 
       listModel.addElement(l.get(i).toString()); 
      } 
     } 
      catch (JDOMException ex) { 
       Logger.getLogger(MP3View.class.getName()).log(Level.SEVERE, null, ex); 
      }   
      catch(IOException io){ 
      io.printStackTrace(); 

     } 

     } 
    } 

をコード - 。初心者です、ごめんなさい。

私がこれを行うことができる別の方法を提案してください。

おかげ

+0

JDomの 'Element'の[javadoc](http://www.jdom.org/docs/apidocs/)を参照してください。 – Rakesh

+0

もう少し具体的にすることはできますか?私は何を使うべきではないよ – yashbmathur

答えて

1
List songElements = doc.getRootElement().getChildren("song"); 

for(int i = 1 ; i <= songElements.size() ; i++) { 
    Element songElement = (Element) songElements.get(i); 
    String name = songElement.getAttributeValue("name"); 
    String path = songElement.getAttributeValue("path"); 
    String album = songElement.getAttributeValue("album"); 
} 

は、JDOMのコレクションは型なしているので、あなたは、rootNode.getChildrenの戻り値はNodeListであるか、この場合には、Elementことを知っておく必要があります。

+0

はうまく働いた – yashbmathur

関連する問題