XML Parsing using DOM

99封情书 提交于 2019-12-13 03:49:01

问题


I have an XML with the following data...

<movies total="3"> 
<movie cover="9_pro.jpg" Title="A Very " MovieDuration="1.29" showtime="2:50 PM"         theatre="UV3"/>
<movie cover="5_pro.jpg" Title="Par" MovieDuration="1.24" showtime=" 12:00 PM"     theatre="University Village 3"/>
<movie cover="8_pro.jpg" Title="PinBts" MovieDuration="1.30" showtime="9:20 PM" theatre="University Village 3"/>
</movies>

I want to parse this using JDOM parser in a servlet...I have used the following code so far:

    try 
    {
    doc=builder.build(url);     
    Element root = doc.getRootElement();
    List children = root.getChildren();     
    out.println(root);  

    for (int i = 0; i < children.size(); i++) 
        {
            Element movieAtt = doc.getRootElement().getChild("movie");      
            //out.println(movieAtt.getAttributeValue( "cover" ));
            out.println(movieAtt.getAttributeValue( "Title" ));
            //out.println(movieAtt.getAttributeValue( "MovieDuration" ));
            //out.println(movieAtt.getAttributeValue( "showtime" ));
            //out.println(movieAtt.getAttributeValue( "theatre" ));
        }   

    }

However my code returns values for the first child element of root repetitively 3 times. I assume this is because i have all 3 child name as "movie" only.

So i want to distinguish these, and make the count to next movie child with attributes like Title="par" etc..

Been figuring out this since so long but could not find. Help would be really appreciable


回答1:


Your's is not working because even though you are looping 3 times, you are always fetching the same (first) node through:

Element movieAtt = doc.getRootElement().getChild("movie"); 

Try this: (untested)

    Element root = doc.getRootElement();
    List children = root.getChildren();     
    out.println(root);  
    if (children != null)
    {
       for (Element child : children) 
       {
         out.println(child.getAttributeValue( "Title" ));
       }
    } 



回答2:


The best way is to get the attribute from the children list instead of asking for movieAtt again.

I have never used JDOM but my pseudocode would be as follows:

for (int i = 0; i < children.size(); i++) {
    Element e = children.get(i);
    String title = e.getAttributeValue("Title");
}


来源:https://stackoverflow.com/questions/8036276/xml-parsing-using-dom

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!