Autore Topic: Problema Parser SAX  (Letto 447 volte)

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Problema Parser SAX
« il: 16 Dicembre 2015, 17:08:22 CET »
0
Ciao a tutti,
ho necessità di parsare il file xml contenuto in questo link http://simpleapi.traileraddict.com/the-dark-knight/trailer al fine di recuperare l'url associato al trailer.

ho provato ad implementare un parser SAX come segue, ma non funziona  :'( :'( potreste indicarmi cosa sbaglio ?

SAXXMLParser.java
Codice (Java): [Seleziona]
public class SAXXMLParser {

    public static List<Employee> parse(InputStream is) {
        List<Employee> employees = null;
        try {
            // create a XMLReader from SAXParser
            XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser()
                    .getXMLReader();
            // create a SAXXMLHandler
            SAXXMLHandler saxHandler = new SAXXMLHandler();
            // store handler in XMLReader
            xmlReader.setContentHandler(saxHandler);
            // the process starts
            xmlReader.parse(new InputSource(is));
            // get the `Employee list`
            employees = saxHandler.getEmployees();
            Log.e("SAXXMLPARSER","SAXXMLPARSER IN!");
        } catch (Exception ex) {
            Log.d("XML", "SAXXMLParser: parse() failed");
        }

        // return Employee list
        return employees;
    }
}

Employee.java
Codice (Java): [Seleziona]
public class Employee {
    private String title;
    private String embed_standard;
    private String src;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getSrc() {
        return src;
    }

    public void setSrc(String src) {
        this.src = src;
    }

    public String getEmbed_standard() {
        return embed_standard;
    }

    public void setEmbed_standard(String embed_standard) {
        this.embed_standard = embed_standard;
    }
}

SAXXMLHandler
Codice (Java): [Seleziona]
public class SAXXMLHandler extends DefaultHandler
{
    private List<Employee> employees;
    private String tempVal;
    private Employee tempEmp;

    public SAXXMLHandler() {
        employees = new ArrayList<Employee>();
    }

    public List<Employee> getEmployees() {
        return employees;
    }

    // Event Handlers
    public void startElement(String uri, String localName, String qName,
                             Attributes attributes) throws SAXException {
        // reset
        tempVal = "";
        if (qName.equalsIgnoreCase("title")) {
            // create a new instance of employee
            tempEmp = new Employee();
        }
    }
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        tempVal = new String(ch, start, length);
    }

    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        if (qName.equalsIgnoreCase("embed_standard")) {
            // add it to the list
            employees.add(tempEmp);
        }
}
}

MainActivity
Codice (Java): [Seleziona]
  List<Employee> employees = null;
        try {
            employees = SAXXMLParser.parse(getAssets().open("[url=http://simpleapi.traileraddict.com/the-dark-knight/trailer"]<![CDATA[The Dark Knight: Trailer]]>[/url]));
        } catch (IOException e) {
            e.printStackTrace();
        }

grazie

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema Parser SAX
« Risposta #1 il: 16 Dicembre 2015, 17:42:58 CET »
0
Da una prima occhiata molto rapida: mi sembra che tu legga il titolo del film per memorizzarlo dentro tempVal, ma mi sembra tu non lo memorizzi da nessun'altra parte.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store