2016-04-30 5 views
0

меня снова, вот мой XMLOnline XML парсер элементы

<XMLFILE> 
<PublishTime>2016-04-30 15:03:40</PublishTime> 

<Days> 
    <day> 
     <Name>Day 1</Name> 

     <absentPeople> 
      <Absent> 
       <Description>Nothing</Description> 
       <FullName>Jack Sparrow</FullName> 
      </Absent> 
     </absentPeople> 

    <day> 
     <Name>Day 2</Name> 

     <absentPeople> 
      <Absent> 
       <Description>Nothing</Description> 
       <FullName>Nobody</FullName> 
      </Absent> 
     </absentPeople> 

</Days> 

Я могу прочитать все названия дней, кто-то может помочь мне читать имена отсутствующих людей, пожалуйста? Чтобы прочитать имена, я использую этот код:

Textview.setText (textview.getText() + "Naam:" + getNode ("Name", eElement) + "\ n" + "\ n" + "\ n "+" \ n ");

public class MainActivity extends Activity { 
// Declare variables 
TextView textview; 
NodeList nodelist; 
ProgressDialog pDialog; 
// Insert image URL 
String URL = "url of xml"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Get the view from activity_main.xml 
    setContentView(R.layout.activity_main); 
    // Locate a TextView in your activity_main.xml layout 
    textview = (TextView) findViewById(R.id.text); 
    // Execute DownloadXML AsyncTask 
    new DownloadXML().execute(URL); 
} 

// DownloadXML AsyncTask 
private class DownloadXML extends AsyncTask<String, Void, Void> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     // Create a progressbar 
     pDialog = new ProgressDialog(MainActivity.this); 
     // Set progressbar title 
     pDialog.setTitle("Android Simple XML Parsing using DOM Tutorial"); 
     // Set progressbar message 
     pDialog.setMessage("Loading..."); 
     pDialog.setIndeterminate(false); 
     // Show progressbar 
     pDialog.show(); 
    } 

    @Override 
    protected Void doInBackground(String... Url) { 
     try { 
      URL url = new URL(Url[0]); 
      DocumentBuilderFactory dbf = DocumentBuilderFactory 
        .newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      // Download the XML file 
      Document doc = db.parse(new InputSource(url.openStream())); 
      doc.getDocumentElement().normalize(); 
      // Locate the Tag Name 
      nodelist = doc.getElementsByTagName("day"); 


     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return null; 

    } 

    @Override 
    protected void onPostExecute(Void args) { 

     for (int temp = 0; temp < nodelist.getLength(); temp++) { 
      Node nNode = nodelist.item(temp); 
      if (nNode.getNodeType() == Node.ELEMENT_NODE) { 
       Element eElement = (Element) nNode; 

       textview.setText(textview.getText() + "Naam : " 
         + getNode("Name", eElement) + "\n" + "\n" + "\n" 
         + "\n"); 

      } 
     } 
     // Close progressbar 
     pDialog.dismiss(); 
    } 
} 

// getNode function 
private static String getNode(String sTag, Element eElement) { 
    NodeList nlList = eElement.getElementsByTagName(sTag).item(0) 
      .getChildNodes(); 
    Node nValue = (Node) nlList.item(0); 
    return nValue.getNodeValue(); 
} 

}

Спасибо в любом случае.

ответ

0

Вы уже знаете, как.

Если у вас есть свой <day> элемент в переменной eElement, вы используете eElement.getElementsByTagName("Name") найти <Name> тег.

Аналогичным образом, вы можете сделать eElement.getElementsByTagName("Absent"), чтобы найти все теги потомков <Absent>, итератировать их, а затем позвонить getNode("FullName", ...).