2012-05-11 1 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. я могу получить все значения, но у меня возникают проблемы, как хранить его в классе и получить его и показать его в списке. Я могу получить заголовок, код раздела. но проблема в том, как я могу получить дочерний узел из нескольких разделов и сохранить его в ArrayList.
  3. Пожалуйста, помогите мне разобрать этот xml. У меня есть код, на котором я работаю, но он слишком запутан. но если кто-то захочет увидеть, что я могу это показать.

-Как Разобрать XML в Android и хранить его в классе

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 либо я проверяю ans my по адресу http: // stackoverflow .com/questions/10089291/how-to-parse-xml-in-android/10090154 # 10090154 – Khan

+0

Анализ: дубликат http://stackoverflow.com/q/4827344/741249 Сохранение данных в класс: я бы подумал это основные навыки программирования. с чем именно вы сталкиваетесь? Показать в списке: множество примеров в Интернете, например. http://www.vogella.com/articles/AndroidListView/article.html – THelper

ответ

0

Используйте SAX-анализатор; это лучший вариант.

0

я хочу разобрать этот XML-код

=> Реализация SAX Parser

я могу получить все значения, но я с проблемой, как сохранить его в классе и получить его и показать его в списке. Я могу получить заголовок, код раздела. но проблема в том, как я могу получить дочерний узел из нескольких разделов и сохранить его в 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); 

надеюсь, что это поможет вам