2013-03-14 219 views
0

我想要從下面的XML文件的列表視圖:多級XML SAX解析器

 <Menu> 
    <Project name ="Desktop Application"> 
<name>Desktop Application</name> 
<Description>This is some text.</Description> 
<image>2130837532</image> 
    <Sub> 
     <SubName>PowerISO</SubName> 
     <SubDescription>This is some text.</SubDescription> 
     <SubImage>2130837555</SubImage> 
    </Sub> 
    <Sub> 
     <SubName>Microsoft Office</SubName> 
     <SubDescription>This is some text.</SubDescription> 
     <SubImage>2130837549</SubImage> 
    </Sub> 
    <Sub> 
     <SubName>Adobe Reader</SubName> 
     <SubDescription>This is some text.</SubDescription> 
     <SubImage> 2130837506 </SubImage> 
    </Sub> 
    <Sub> 
     <SubName>Vlc Player</SubName> 
     <SubDescription>This is some text.</SubDescription> 
     <SubImage>2130837587</SubImage> 
    </Sub> 
    <Sub> 
     <SubName>Picasa Photo Viewer</SubName> 
     <SubDescription>This is some text.</SubDescription> 
     <SubImage>2130837554</SubImage> 
    </Sub> 
    <Sub> 
     <SubName>KM Player</SubName> 
     <SubDescription>This is some text.</SubDescription> 
     <SubImage>2130837542</SubImage> 
    </Sub> 
    <Sub> 
     <SubName>Cricket</SubName> 
     <SubDescription>This is some text.</SubDescription> 
     <SubImage>2130837524</SubImage> 
    </Sub> 
</Project> 

等等,但我已經創建了一個主要項目,但點擊的是一個後我要顯示子根據主要項目的項目。 我無法創建第二個列表,它將根據主要項目顯示子項目。 我已經使用SAX解析器完成了這項工作。 Plz幫助我做到這一點。

這是我的startElement()方法,我希望如果項目名稱是桌面應用程序比桌面應用程序的子項目將顯示在列表視圖上。 我沒有得到這個。 請幫助我!

 public void startElement(String uri, String localName, String qName, 
     Attributes attributes) throws SAXException { 
    // TODO Auto-generated method stub 

    currentElement = true; 

    if (qName.equals("Menu")) { 
     subList = new ArrayList<SubProjectInfo>(); 
    } else if (qName.equals("Project")) { 
     subProInfo1 = new SubProjectInfo(); 
     String gh = attributes.getValue("name"); 

回答

0
  1. 設置一個標誌設置爲true時的startElement()調用與屬性名稱的項目設置爲桌面應用程序

  2. 設置相同的標誌設置爲false時的startElement()被調用一個具有其他名稱的項目

  3. 只要標誌爲true並且爲子名稱元素調用startElement(),就可以將元素的文本內容保存到列表視圖中。

+0

我只想知道startElement方法是如何工作的,我的意思是該方法的流程? D.R. – 2013-03-14 12:29:13

+0

我想你還沒有理解SAX。 startElement()不會爲整個文檔調用一次,這不是DOM。 startElement()會被多次調用:一次對於XML中的每個元素!所以你必須在你的處理程序中保存狀態(即我在最初的答案中談到的那面旗幟),並遵循我描述的規則。 – 2013-03-14 12:31:33

+0

非常感謝你mucn男人! D.R. – 2013-03-14 12:56:58