2012-03-18 26 views
1

林创建应用程序在Java中使用XML。我如何使用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' – Rakesh 2012-03-18 16:32:10

+0

的[javadoc的(http://www.jdom.org/docs/apidocs/)你能成为一个更具体一点。我没有得到使用什么 – yashbmathur 2012-03-18 16:44:22

回答

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 2012-03-18 16:58:09

相关问题