2011-01-11 4 views
1

hii все am sowmya я новичок в android, пожалуйста, кто-нибудь может мне помочь, разбор локального XML-файла, но я получаю только вывод для первого вопроса (первый набор тегов), но второй вопрос (повторяющиеся теги) я не получаю ,, Thanx заранееРазбор локального файла XML в android

<innertag sampleattribute="innertagAttribute"> 
<mytag>1) How did u find the hotel house keeping overall in the year </mytag> 

<innertag sampleattribute="innertagAttribute"> 
<mytag>2) How do u rate the hotel house keeping overall in the year </mytag> 

</outertag> 

/////////////////////////////////////// ////////////////////////////////////////////////// /// Я использую это как файл обработчика xml ////////////////////////////////////// ////////////////////////////////////////////////// //// package com.itwine;

import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler;

общественного класса XMLHandler расширяет DefaultHandler {

// =========================================================== 
// Fields 
// =========================================================== 

private boolean in_outertag = false; 
private boolean in_innertag = false; 
private boolean in_mytag = false; 




private boolean in_innertag1 = false; 
private boolean in_mytag1= false; 




private boolean in_innertag2 = false; 
private boolean in_mytag2 = false; 

private XMLDataSet myParsedExampleDataSet = new XMLDataSet(); 
private XMLDataSet myParsedExampleDataSet1 = new XMLDataSet(); 
private XMLDataSet myParsedExampleDataSet2 = new XMLDataSet(); 
private XMLDataSet myParsedExampleDataSet3 = new XMLDataSet(); 


// =========================================================== 
// Getter & Setter 
// =========================================================== 

public XMLDataSet getParsedData() { 
     return this.myParsedExampleDataSet; 
} 

public XMLDataSet getParsedData1() { 
    return this.myParsedExampleDataSet1; 
} 
public XMLDataSet getParsedData2() { 
    return this.myParsedExampleDataSet2; 
} 
public XMLDataSet getParsedData3() { 
    return this.myParsedExampleDataSet3; 
} 


// =========================================================== 
// Methods 
// =========================================================== 
@Override 
public void startDocument() throws SAXException { 
     this.myParsedExampleDataSet = new XMLDataSet(); 

     this.myParsedExampleDataSet1 = new XMLDataSet(); 

     this.myParsedExampleDataSet2 = new XMLDataSet(); 

     this.myParsedExampleDataSet3 = new XMLDataSet(); 
} 

@Override 
public void endDocument() throws SAXException { 
     // Nothing to do 
} 

/** Gets be called on opening tags like: 
    * <tag> 
    * Can provide attribute(s), when xml was like: 
    * <tag attribute="attributeValue">*/ 
@Override 
public void startElement(String namespaceURI, String localName, 
      String qName, Attributes atts) throws SAXException { 
     if (localName.equals("outertag")) 
     { 
      this.in_outertag = true; 
     } 



     else if (localName.equals("innertag")) 
     { 
      this.in_innertag = true; 
     } 

     else if (localName.equals("mytag")) 
     { 
      this.in_mytag = true; 
     } 

     else if (localName.equals("tagwithnumber")) 
     { 
      // Extract an Attribute 
      String attrValue = atts.getValue("thenumber"); 
      int i = Integer.parseInt(attrValue); 
      myParsedExampleDataSet.setExtractedInt(i); 
     } 

     else if (localName.equals("innertag1")) 
     { 
      this.in_innertag1 = true; 
     } 

     else if (localName.equals("mytag1")) 
     { 
      this.in_mytag1 = true; 
     } 

     else if (localName.equals("tagwithnumber1")) 
     { 
      // Extract an Attribute 
      String attrValue = atts.getValue("thenumber"); 
      int j = Integer.parseInt(attrValue); 
      myParsedExampleDataSet1.setExtractedInt(j); 
     } 

     else if (localName.equals("innertag2")) 
     { 
      this.in_innertag2 = true; 
     } 

     else if (localName.equals("mytag2")) 
     { 
      this.in_mytag2 = true; 
     } 

     else if (localName.equals("tagwithnumber2")) 
     { 
      // Extract an Attribute 
      String attrValue = atts.getValue("thenumber"); 
      int k = Integer.parseInt(attrValue); 
      myParsedExampleDataSet2.setExtractedInt(k); 
     } 

     else if (localName.equals("QIA")) 
     { 
      // Extract an Attribute 



     } 


} 


/** Gets be called on closing tags like: 
    * </tag> */ 
@Override 
public void endElement(String namespaceURI, String localName, String qName) 
      throws SAXException { 



     if (localName.equals("outertag")) 
     { 
      this.in_outertag = false; 
     } 
     else if (localName.equals("innertag")) 

     { 
      this.in_innertag = false; 
     } 

     else if (localName.equals("mytag")) 

     { 
      this.in_mytag = false; 
     } 

     else if (localName.equals("tagwithnumber")) { 
      // Nothing to do here 
     } 


     else if (localName.equals("innertag1")) 

     { 
      this.in_innertag1 = false; 
     } 

     else if (localName.equals("mytag1")) 

     { 
      this.in_mytag1 = false; 
     } 

     else if (localName.equals("tagwithnumber1")) { 
      // Nothing to do here 
     } 

     else if (localName.equals("innertag2")) 

     { 
      this.in_innertag2 = false; 
     } 

     else if (localName.equals("mytag2")) 

     { 
      this.in_mytag2 = false; 
     } 

     else if (localName.equals("tagwithnumber2")) { 
      // Nothing to do here 
     } 
} 


/** Gets be called on the following structure: 
    * <tag>characters</tag> */ 
@Override 
public void characters(char ch[], int start, int length) { 
     if(this.in_mytag){ 
     myParsedExampleDataSet.setExtractedString(new String(ch, start, length)); 
} 

     else if(this.in_mytag1){ 
      myParsedExampleDataSet1.setExtractedString(new String(ch, start, length)); 
    } 

     else if(this.in_mytag2){ 
      myParsedExampleDataSet2.setExtractedString(new String(ch, start, length)); 
    } 
} 

}

+1

Основная идея синтаксического анализа заключается в извлечении данных, заключенных между некоторыми тегами, которые обычно повторяются более одного раза. Кроме того, тот факт, что у вас есть источник данных xml локальный или удаленный, не требует другого синтаксического анализатора. Кажется, ваша проблема заключается в том, как хранить данные после их получения путем разбора. – Adinia

ответ

2

я сделал XML-парсинг в андроид. проверить эту ссылку для сборки ..

compliantbox.com/XmlParsingcompliant.zip

просто заменить URL с локальным адресом ...................

+0

thanx для ответа ур, но данные в этом URL-адресе содержат мусорные данные, какие данные должны быть у меня в локальном файле ,,,, i hav мало путаницы в синтаксисе ,, ill u, пожалуйста, дайте мне код, который анализирует локальный xml, который содержит повторяющиеся теги (я имею в виду, что один и тот же тег используется несколько раз) – Sowmya

+0

thak u очень много для обеспечения того, что zip-файл мне очень помог – Sowmya

+0

hii prateek Raj ill u, пожалуйста, дайте мне файл XMLComlaint.java, в котором URL-адрес заменен на локальный xml-путь, am не получая синтаксис, я хочу, чтобы ур ответил ,,, thanx в adwance – Sowmya

0

Реализация в вашем коде таково, что если условие истинно, оно появляется в первом экземпляре. Так что ваш код не может видеть второй mytag.

Если разрешено изменить, вы можете очень хорошо изменить имена тегов:
mytag11
mytag22

Я думаю, это должно работать.

+0

thanx для вашего ответа ,, ya этот случай работает, но мне нужно использовать те же теги неоднократно (один и тот же тег используется несколько раз) – Sowmya

+1

Затем вам нужно сохранить значения строки тега в структуре данных и обработать их по одному. Текущая реализация всегда будет выходить после первого mytag. – TheCottonSilk

+0

oh ok please ill u дайте мне один маленький пример кода, который хранит значения строки тега в структуре данных, thanx заранее – Sowmya

Смежные вопросы