2013-02-19 1 views
0

Мне нужно разработать один синтаксический разбор XML-синтаксиса с использованием sax.получить значение атрибута в android sax xml parsing

Это мой XML корма:

<root> 
<Categories> 
     <Category name="book"> 
    <Articles> 
    <article articleid="170" title="java programming"> 
     <thumb_image> 
    <image url="http://website/var/tmp/thumb_2536_design_pavitra-rajaram_1_thumb_dec2012__forfeed.jpeg"/> 
     </thumb_image> 
     <images> 
     <image url="http://food/dec2012/1_chef-olaf-niemeier_main_dec2012.jpg" alttext="Chef Olaf Niemeier"/> 
     <image url="http://food/dec2012/2_chutneys-from-hamburg_main_dec2012.jpg" alttext="Chef Olaf Niemeier"/> 
     </images> 
     </article> 
    <article articleid="171" title="Android programming"> 
    <thumb_image> 
    <image url="http://website/var/tmp/thumb_2220_1_itc-grand-chola-chennai_main_dec2012__forfeed.jpeg"/> 
    </thumb_image> 
     <images> 
     <image url="http://food/dec2012/1_chef-olaf-niemeier_main_dec2012.jpg" alttext="Chef Olaf Niemeier"/> 
     <image url="http://food/dec2012/2_chutneys-from-hamburg_main_dec2012.jpg" alttext="Chef Olaf Niemeier"/> 
     </images> 
     </article> 
     </Article> 
    </Category> 
    <Category name="Animals"> 
    <Articles> 
      <article articleid="81" title="Dog"> 
      <thumb_image> 
      <image url="http://website/var/tmp/thumb_2220_1_itc-grand-chola-chennai_main_dec2012__forfeed.jpeg"/> 
     </thumb_image> 
     <images> 
     <image url="http://food/dec2012/1_chef-olaf-niemeier_main_dec2012.jpg" alttext="Chef Olaf Niemeier"/> 
      <image url="http://food/dec2012/2_chutneys-from-hamburg_main_dec2012.jpg" alttext="Chef Olaf Niemeier"/> 
     </images> 
      </article> 
     <article articleid="81" title="Cat"> 
     <thumb_image> 
      <image url="http://website/var/tmp/thumb_2220_1_itc-grand-chola-chennai_main_dec2012__forfeed.jpeg"/> 
      </thumb_image> 
      <images> 
      <image url="http://food/dec2012/1_chef-olaf-niemeier_main_dec2012.jpg" alttext="Chef Olaf Niemeier"/> 
      <image url="http://food/dec2012/2_chutneys-from-hamburg_main_dec2012.jpg" alttext="Chef Olaf Niemeier"/> 
      </images> 
      </article> 
      </Article> 
      </Category> 
      </Categories> 

Я получил название категории и статьи title..but я не получил image..how я могу получить image..pls помочь мне ...

я использовал код ниже:

public void startElement(String uri, String localName, String qName, 
     Attributes attributes) throws SAXException { 
    // reset 
    tempVal = ""; 
    if (qName.equalsIgnoreCase("Category")) { 
     // create a new instance of Laptop 
     laptop = new Laptop(); 
     laptop.setBrand(attributes.getValue("name")); 
    } 
    else if (qName.equalsIgnoreCase("article")) { 
     // create a new instance of Laptop 
     article = new Laptop(); 
     article.setModel(attributes.getValue("title")); 
    } 
    else if (qName.equalsIgnoreCase("thumb_image")) { 

     // create a new instance of Laptop 
     image = new Laptop(); 
     image.setImageURL(attributes.getValue("url")); 
    } 

} 

пожалуйста дайте мне решение для них ... как я могу получить URL изображения из одной только thum_image тега ...

+0

Ваш элемент, содержащий url изображение, а не thumb_image ... – njzk2

+0

@ njzk2, пожалуйста, прочитайте мой обновленный вопрос и дайте мне решение для них. Мне нужен URL-адрес изображения из тега thumb_image. – android

+0

Я прочитал ваш обновленный вопрос, и я делаю тот же комментарий, что и раньше. вы пытаетесь получить доступ к url ​​в thumb_image, когда url находится в образе – njzk2

ответ

1

Используйте обработчик для startElement и endElement, оба из них. Я предлагаю вам использовать Stack в качестве члена парсера.

private tagStack = new Stack(); 

    public void startElement(String uri, String localName, String qName, 
    Attributes attributes) { 
     ... 
     else if (qName.equals("image")) { 
     if ("thumb_image".equals(tagStack.peek())) { 
      image = new Laptop(); 
      image.setImageURL(attributes.getValue("url")); 
     } 
     } 
     // make sure it is at the end of method 
     tagStack.push(qName); 
    } 

    public void endElement(String uri, String localName, String qName) { 
     ... 
     tagStack.pop(); 
    } 

Если вы хотите только большое палец изображения и ничего более вложенного, вы можете установить Ее in_thumb_image истину от StartElement() и от ложного EndElement(), если это QName == «thumb_image». Стек более общий. Для более высоких уровней вы можете использовать tagStack.search();

И вне темы. XML чувствителен к регистру, ignoreCase не следует использовать, на мой взгляд.

+0

утра становится ниже ошибки: Ошибка синтаксиса на токене «tagStack», VariableDeclaratorId ожидается после этого токена на этих личных тегахStack = new Stack(); line.how можно решить эту ошибку ??? – android