2015-12-16 2 views
0
<xml> 
<Table_Info> 
<SeenStatus>0</SeenStatus> 
<NewLimit>0</NewLimit> 
</Table_Info> 
</xml> 

это данные я получаю от конца сервера и код для синтаксического анализа как ПоследующиеXML класс синтаксического литого исключение

  DocumentBuilderFactory dbf = DocumentBuilderFactory 
        .newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse(new InputSource(url.openStream())); 
      doc.getDocumentElement().normalize(); 

      NodeList nodeList = doc.getElementsByTagName("Table_Info"); 

      /** Assign textview array length by arraylist size */ 

      System.out.println(".....prinyt user data..." + url); 

      for (int i = 0; i < nodeList.getLength(); i++) { 

       Node node = nodeList.item(i); 

       Element fstElmnt = (Element) node; 

       NodeList costList1 = fstElmnt.getElementsByTagName("SeenStatus"); 
       Element costElement1 = (Element) costList1.item(0); 
       costList1 = costElement1.getChildNodes(); 
       seen_stat_server = ((Node) costList1.item(0)).getNodeValue(); 
       String mchaal = min_chaal; 
       System.out.println("...prinyt user data....." + min_chaal); 
       NodeList costList = fstElmnt.getElementsByTagName("NewLimit"); 
       Element costElement = (Element) costList1.item(0); 
       costList = costElement.getChildNodes(); 

       min_chaal = ((Node) costList1.item(0)).getNodeValue(); 
       System.out.println("...prinyt user data....." + total); 
       String str2 = total; 

теперь я получаю exception-

Java .lang.ClassCastException: org.apache.harmony.xml.dom.TextImpl не может быть передан в org.w3c.dom.Element

on это линия->

`NodeList costList = fstElmnt.getElementsByTagName("NewLimit"); 
        Element costElement = (Element) costList1.item(0);` 

на самом деле я новичок в XML разбора поэтому, пожалуйста, скажите мне, Что проблема

+1

Измените элемент Element costElement = (Element) costList1.item (0); 'на элемент Element costElement = (Element) costList.item (0);' и на какой строке возникает проблема –

+0

'Элемент costElement = (Element) costList1 .item (0); 'на этой строке есть ошибка – sud

+0

, и есть два дочерних тега, поэтому нужны оба элемента' costElement' и 'costElement1' – sud

ответ

0

Я рекомендую вам пойти на XMLPullParser сог пути быстрее, чем SAX и DOM анализаторами.

ниже класс XMLPullParserHandler -

public class XmlPullParserHandler { 

String text; 
StringBuilder builder = new StringBuilder(); 

public String parse(InputStream is) { 

    try { 

     XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
     factory.setNamespaceAware(true); 
     XmlPullParser parser = factory.newPullParser(); 

     parser.setInput(is, null); 

     int eventType = parser.getEventType(); 

     while (eventType != XmlPullParser.END_DOCUMENT) { 
      String tagname = parser.getName(); 
      switch (eventType) { 

       case XmlPullParser.TEXT: 
        text = parser.getText(); 
        break; 

       case XmlPullParser.END_TAG: 
        if (tagname.equalsIgnoreCase("SeenStatus")) { 
         builder.append("SeenStatus = " + text); 
        } else if (tagname.equalsIgnoreCase("NewLimit")) { 
         builder.append("\nNewLimit = " + text); 
        } 
        break; 

       default: 
        break; 
      } 
      eventType = parser.next(); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (XmlPullParserException e) { 
     e.printStackTrace(); 
    } 

    return builder.toString(); 
} 


} 

ниже класс XMLPullParser

public class XMLPullParser extends AppCompatActivity { 

TextView txtXML; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_xmlpull_parser); 


    txtXML = (TextView) findViewById(R.id.txtXML); 

    try { 

     XmlPullParserHandler parser = new XmlPullParserHandler(); 
     InputStream is = getAssets().open("sampleXML.xml"); 

     String xmlOutput = parser.parse(is); 
     txtXML.setText(xmlOutput); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


} 

} 

Я принес XML от активов, но и может просто передать возвращенный ответ InputStream, чтобы разобрать его успешно.

+0

ok спасибо, я попробую, но на самом деле моя проблема отлита. исчезнуть с помощью XMLPullParser? – sud

+0

@sud: Я проанализировал xml, который у вас упомянул в Q, и он разбирал его успешно. – kevz

+0

ОК, тогда я попрошу его, спасибо – sud