2012-05-11 55 views
0
<layout> 

<menu1> 
    <title>Oil Painting</title> 
    <sectioncount>5</sectioncount> 
    <cost>0</cost> 
    <appcode>0</appcode> 
    <section1.1> 
     <title>Oil Painting basics</title> 
     <subtitle>9 minutes 57 secs*!How to do Oil Painting</subtitle> 
     <video1.1></video1.1> 
     <imgvideo>Landscape19.jpg</imgvideo> 
     <description>video1.html</description> 
    </section1.1> 
    <section1.2> 
     <title>Advacned Oil Painintg</title> 
     <subtitle>6 minutes 23 secs*!Advanced Oil Painting</subtitle> 
     <video1.2></video1.2> 
     <imgvideo>Landscape19.jpg</imgvideo> 
     <description>video1.html</description> 
    </section1.2> 
    <section1.3> 
     <title>Watercolors basic</title> 
     <subtitle>9 minutes 51 secs*!How to use watercolors</subtitle> 
     <video1.3></video1.3> 
     <imgvideo>fifa.jpg</imgvideo> 
     <description>video1.html</description> 
    </section1.3> 
    <section1.4> 
     <title>Watercolors Advanced</title> 
     <subtitle>3 minutes 46 secs*!Advacned training- Watercolors</subtitle> 
     <video1.4></video1.4> 
     <imgvideo>fifa.jpg</imgvideo> 
     <description>video1.html</description> 
    </section1.4> 
    <section1.5> 
     <title>Enamel Painting Basic</title> 
     <subtitle>1 minute 56 secs*!Advacned training- Watercolors</subtitle> 
     <video1.5></video1.5> 
     <imgvideo>fifa.jpg</imgvideo> 
     <description>video1.html</description> 
    </section1.5>  
</menu1> 

<menu2> 
    <title>Graphite Pencil Sketching</title> 
    <sectioncount>4</sectioncount> 
    <cost>.99</cost> 
    <appcode>0</appcode> 
    <section2.1> 
     <title>Basic Graphite Pencil Sketching</title> 
     <subtitle>5 minutes 29 secs*!What you need to know</subtitle> 
     <video2.1></video2.1> 
     <imgvideo>fifa.jpg</imgvideo> 
     <description>video1.html</description> 
    </section2.1> 
    <section2.2> 
     <title>Advanced Graphite Pencil Sketching</title> 
     <subtitle>3 minutes*!The proffessional way</subtitle> 
     <video2.2></video2.2> 
     <imgvideo>fifa.jpg</imgvideo> 
     <description>video1.html</description> 
    </section2.2> 
    <section2.3> 
     <title>Graphite Pencil Tools</title> 
     <subtitle>5 minutes*!what should you use</subtitle> 
     <video2.3></video2.3> 
     <imgvideo>Landscape19.jpg</imgvideo> 
     <description>video1.html</description> 
    </section2.3> 
    <section2.4> 
     <title>Do's and Don't of Graphite Pencil Sketching</title> 
     <subtitle>5 minutes*Cautions and precautions</subtitle> 
     <video2.4></video2.4> 
     <imgvideo>Landscape19.jpg</imgvideo> 
     <description>video1.html</description> 
    </section2.4> 
</menu2> 

<menu3> 
    <title>Pen Sketching</title> 
    <sectioncount>3</sectioncount> 
    <cost>0</cost> 
    <section3.1> 
     <title>Basic Pen Sketching</title> 
     <subtitle>2 minutes*!what you need to know</subtitle> 
     <video3.1></video3.1> 
     <imgvideo>fifa.jpg</imgvideo> 
     <description>video1.html</description> 
    </section3.1> 
    <section3.2> 
     <title>Advanced Pen Sketching</title> 
     <subtitle>3 minutes*!proffessional approach</subtitle> 
     <video3.2></video3.2> 
     <imgvideo>fifa.jpg</imgvideo> 
     <description>video1.html</description> 
    </section3.2> 
    <section3.3> 
     <title>Pen Sketching Tools</title> 
     <subtitle>3 minutes*!which pens to use</subtitle> 
     <video3.3></video3.3> 
     <imgvideo>fifa.jpg</imgvideo> 
     <description>video1.html</description> 
    </section3.3> 
</menu3> 
</layout> 
  1. 我要分析此XML代碼
  2. 我可以得到所有的值,但我有問題,如何將其存儲在課堂上和檢索,並在listview中顯示它..我可以得到標題,部分代碼。但問題是如何獲得多節的子節點並將其存儲在ArrayList中。
  3. 請幫我解析這個xml。我有我正在工作的代碼,但它太混亂了。但如果有人想看到我可以證明這一點。

-如何解析android的XML,並將其存儲在課堂

public class twitterFeedHandler extends DefaultHandler 

StringBuilder sb = null; 
String ret = ""; 
boolean bStore = false; 
int howMany = 0; 
Context context; 
String a; 
boolean config = false; 
boolean menu = false; 
Boolean section = false; 

String elementValue = null; 
Boolean elementOn = false; 

private final static String TAG_Layout = "layout"; 
private final static String TAG_COnfig = "configuration"; 
private final static String TAG_Menu = "menu"; 

public static XMLGettersSetters data = null; 
public static XMLGettersSettersMenu datamenu = null; 

twitterFeedHandler() { 
} 


} 

@Override 
public void startDocument() throws SAXException { 

} 

@Override 
public void endDocument() throws SAXException { 

} 

@Override 
public void startElement(String namespaceURI, String localName, 
     String qName, Attributes atts) throws SAXException { 


    try { 





     elementOn = true; 

     if (localName.equals(TAG_Layout)) { 
      data = new XMLGettersSetters(); 
      datamenu = new XMLGettersSettersMenu(); 
     }if (localName.equals(TAG_COnfig)) { 

      config = true; 
      Log.i("Config localName", "configuration start"); 

     } else if (localName.equals(TAG_Menu)) { 

      Log.i("Menu localName", "menu1 start"); 

      if (localName.equals("section1")) { 
       if(localName.equals("stitle1")) 
       Log.i("Section localName", "section start"); 
       section = true; 

      } 

      menu = true; 


      Log.i("DATA --- > Menu ", datamenu.getCompany().toString()); 
     } 

    } catch (Exception ee) { 

     Log.d("error in startElement", ee.getStackTrace().toString()); 
    } 
} 

@Override 
public void endElement(String namespaceURI, String localName, String qName) 
     throws SAXException { 

    if (localName.equals("configuration")) { 

     Log.i("Config localName", "configuration end"); 
     bStore = false; 
    } else if (localName.equals("menu")) { 
     Log.i("Menu localName", "menu end"); 

     if (localName.equals("section1")) { 
      Log.i("Section localName", "section end"); 
      section = false; 
     } 
     menu = false; 
    } 
    if(localName.equals("title")) 
     datamenu.setTitle(elementValue); 
    if(localName.equals("sectioncount")) 
     datamenu.setCompany_SectionCount(elementValue); 
    if(localName.equals("section1")) 
     if(localName.equals("stitle1")) 
      datamenu.setSection(elementValue); 

    Log.i("Menu localName214213132132132"," " + datamenu.getCompany_SectionCount() + " size " + datamenu.getSection()); 
    elementOn = false; 

    } 


@Override 
public void characters(char[] ch, int start, int length) 
     throws SAXException { 

    if (elementOn) { 
     elementValue = new String(ch, start, length); 
     Log.i("--------->Name", section + " "); 

     if (config && menu == false) 
      data.setCompany(elementValue); 
     else 
      datamenu.setCompany(elementValue); 

     elementOn = false; 
    } 

} 

public class XMLGettersSetters { 
    private ArrayList<String> company = new ArrayList<String>(); 

    public ArrayList<String> getCompany() { 
     return company; 
    } 

    public void setCompany(String company) { 
     this.company.add(company); 

    } 
} 

public class XMLGettersSettersMenu { 
    private ArrayList<String> company = new ArrayList<String>(); 
    private ArrayList<String> title = new ArrayList<String>(); 
    private ArrayList<String> section_count = new ArrayList<String>(); 
    private ArrayList<String> section = new ArrayList<String>(); 


    public ArrayList<String> getCompany() { 
     return company; 
    } 

    public void setCompany(String company) { 
     this.company.add(company); 

    } 

    public void setTitle(String company) { 
     this.title.add(company); 

    } 

    public ArrayList<String> getTitle() { 
     return title; 
    } 

    public void setCompany_SectionCount(String company) { 
     this.section_count.add(company); 

    } 

    public ArrayList<String> getCompany_SectionCount() { 
     return section_count; 
    } 

    public void setSection(String company) { 
     this.section.add(company); 

    } 

    public ArrayList<String> getSection() { 
     return section; 
    } 
} 
} 
+0

來吧,告訴我們你是如何想的值存儲在一個類。 – gobernador

+1

請參閱我的答案,因爲http://stackoverflow.com/questions/2728064/parsing-local-xml-file-using-sax-in-android/8411959#8411959無論你在http:// stackoverflow檢查我的答案如何解析xml-in-android/10090154#10090154 – Khan

+0

解析:http://stackoverflow.com/q/4827344/741249重複將數據保存到類中:這是基本的編程技巧。你到底有什麼問題? 以listview方式顯示:網上有很多例子,例如http://www.vogella.com/articles/AndroidListView/article.html – THelper

回答

0

使用SAX解析器;這是最好的選擇。

0

我要分析此XML代碼

=>實施SAX解析器

我可以得到所有的值,但我有問題,如何將其存儲在課堂上和檢索並顯示它在列表視圖..我可以得到標題,部分代碼。但問題是我如何獲得多節的子節點並將其存儲在ArrayList中。

對於這個問題,我建議你用屬性標題,字幕和其他創建一個類,爲同樣的創建Getter/setter方法。

爲什麼我建議這個解決方案? 因爲你要創建不同的ArrayList:

private ArrayList<String> company = new ArrayList<String>(); 
private ArrayList<String> title = new ArrayList<String>(); 
private ArrayList<String> section_count = new ArrayList<String>(); 
private ArrayList<String> section = new ArrayList<String>(); 

相反,你可以創建一個ArrayList和添加對象每次。

在解析整個XML結束時,您將使ArrayList具有多個對象,現在您可以使用此ArrayList爲ListView創建適配器。

0

我用這個代碼解析XML

xml is like this 

<point> 
    <ImageFile name="hi"/> 
</point> 

NodeList image = doc.getElementsByTagName("Point"); 
      Node singleTerminalNode = image.item(i); 
      Element firstLevel = (Element)singleTerminalNode; 
      NodeList value1Nodes = (firstLevel).getElementsByTagName("ImageFile"); 
      imagess = ((Element)value1Nodes.item(imageindex)).getAttribute("name"); 
      System.out.println("image index issssssssss " + imageindex); 

希望這將幫助你

相關問題