Как проанализировать XML-файл в приложении для Android - PullRequest
0 голосов
/ 30 марта 2011

Я пытаюсь проанализировать XML-файл, как показано ниже

<Subject>
    <chapter>
       <Question>abc</Question>
       <answer>avksn</answer>
    </chapter>
    <chapter>
        <Question>def</Question>
       <answer>avksn</answer>
    </chapter>
    <chapter>
         <Question>ccsv</Question>
        <answer>avksn</answer>
    </chapter>
</Subject>

, в этом я могу подсчитать количество глав.номер главы равен числу вопросов и ответов.я также поместил кнопку с именем ok в моем макете.

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

как это сделать, пожалуйста, помогите мне

Ответы [ 2 ]

1 голос
/ 30 марта 2011

Прочитайте XML в InputStream и затем:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse([the InpuTstream]);

Тогда вы можете использовать документ, как:

  if(doc.getElementsByTagName("GeometryCollection").getLength()>0){
    org.w3c.dom.Node parent_node = doc.getElementsByTagName("GeometryCollection").item(0);
    NodeList nl = parent_node.getChildNodes();
    for(int i = 0;i<nl.getLength();i++){
     ...
1 голос
/ 30 марта 2011

Считайте XML в документ (v = строка xml)

public Document XMLfromString(){

    Document doc = null;

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    try {

        DocumentBuilder db = dbf.newDocumentBuilder();

        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(v));
        doc = db.parse(is); 

    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        System.out.println("Wrong XML file structure: " + e.getMessage());
        return null;
    } catch (IOException e) {
        e.printStackTrace();
    }

    return doc;

}

Затем получите такой элемент:

/** Returns element value
  * @param elem element (it is XML tag)
  * @return Element value otherwise empty String
  */
 public final static String getElementValue( Node elem ) {
     Node kid;
     if( elem != null){
         if (elem.hasChildNodes()){
             for( kid = elem.getFirstChild(); kid != null; kid = kid.getNextSibling() ){
                 if( kid.getNodeType() == Node.TEXT_NODE  ){
                     return kid.getNodeValue();
                 }
             }
         }
     }
     return "";
 }

Как использовать:

Document doc = x.XMLfromString();
NodeList nodes = doc.getElementsByTagName("result");

    for (int i = 0; i < nodes.getLength(); i++) {                           
        HashMap<String, String> map = new HashMap<String, String>();    

        Element e = (Element)nodes.item(i);
        map.put("id", x.getValue(e, "orgid"));
        map.put("bedrijf", x.getValue(e, "naam"));
        map.put("plaats", x.getValue(e, "plaats"));
        mylist.add(map);            
    }
...