【问题标题】:Online XML parser elements在线 XML 解析器元素
【发布时间】:2016-04-30 14:03:47
【问题描述】:

又是我,这是我的 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("名称", 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();
}

}

还是谢谢。

【问题讨论】:

    标签: java android xml parsing


    【解决方案1】:

    你已经知道怎么做了。

    eElement 变量中有&lt;day&gt; 元素时,您将使用eElement.getElementsByTagName("Name") 来查找&lt;Name&gt; 标记。

    同样,您可以使用eElement.getElementsByTagName("Absent") 查找所有后代&lt;Absent&gt; 标签,对其进行迭代,然后调用getNode("FullName", ...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多