【问题标题】:How to Parsing one childnodes in xml on android?如何在android上解析xml中的一个子节点?
【发布时间】:2026-01-04 13:30:01
【问题描述】:

我是 android 编程新手。我想创建可以解析 xml 文件的应用程序。下面是xml文件结构

<Cuaca>
<Tanggal>
<Mulai>30 March 2013</Mulai>
<MulaiPukul>07.00</MulaiPukul>
<Sampai>31 March 2013</Sampai>
<SampaiPukul>07.00</SampaiPukul>
</Tanggal>
<Isi>
<Row>
<Kota>Wates</Kota>
<point>
<coordinates>-</coordinates>
</point>
<Lintang>-7.81337</Lintang>
<Bujur>110.14757</Bujur>
<Balai>BBMKG_Ciputat</Balai>
<Propinsi>DI Yogyakarta</Propinsi>
<Cuaca>Berawan</Cuaca>
<_symbol>../imagesSWF/Berawan.swf</_symbol>
<SuhuMin>24</SuhuMin>
<SuhuMax>32</SuhuMax>
<KelembapanMin>67</KelembapanMin>
<KelembapanMax>96</KelembapanMax>
<KecepatanAngin>15</KecepatanAngin>
<ArahAngin>Tenggara</ArahAngin>
</Row>
<Row>
<Kota>Bantul</Kota>
<point>
<coordinates>-</coordinates>
</point>
<Lintang>-7.90749</Lintang>
<Bujur>110.35802</Bujur>
<Balai>BBMKG_Ciputat</Balai>
<Propinsi>DI Yogyakarta</Propinsi>
<Cuaca>Berawan</Cuaca>
<_symbol>../imagesSWF/Berawan.swf</_symbol>
<SuhuMin>24</SuhuMin>
<SuhuMax>33</SuhuMax>
<KelembapanMin>64</KelembapanMin>
<KelembapanMax>95</KelembapanMax>
<KecepatanAngin>15</KecepatanAngin>
<ArahAngin>Tenggara</ArahAngin>
</Row>
<Row>
<Kota>Wonosari</Kota>
<point>
<coordinates>-</coordinates>
</point>
<Lintang>-7.99321</Lintang>
<Bujur>110.58518</Bujur>
<Balai>BBMKG_Ciputat</Balai>
<Propinsi>DI Yogyakarta</Propinsi>
<Cuaca>Berawan</Cuaca>
<_symbol>../imagesSWF/Berawan.swf</_symbol>
<SuhuMin>25</SuhuMin>
<SuhuMax>32</SuhuMax>
<KelembapanMin>65</KelembapanMin>
<KelembapanMax>94</KelembapanMax>
<KecepatanAngin>15</KecepatanAngin>
<ArahAngin>Tenggara</ArahAngin>
</Row>
</Isi>
</Cuaca>

我使用 DOM 解析器成功解析了上面的页面。但我想要的是只从 xml 文件中提取一部分而不循环,例如:

<Row>
<Kota>Wates</Kota>
<point>
<coordinates>-</coordinates>
</point>
<Lintang>-7.81337</Lintang>
<Bujur>110.14757</Bujur>
<Balai>BBMKG_Ciputat</Balai>
<Propinsi>DI Yogyakarta</Propinsi>
<Cuaca>Berawan</Cuaca>
<_symbol>../imagesSWF/Berawan.swf</_symbol>
<SuhuMin>24</SuhuMin>
<SuhuMax>32</SuhuMax>
<KelembapanMin>67</KelembapanMin>
<KelembapanMax>96</KelembapanMax>
<KecepatanAngin>15</KecepatanAngin>
<ArahAngin>Tenggara</ArahAngin>
</Row>

有人可以帮帮我吗?对不起,如果我写的很乱,那是因为我第一次在论坛上问。

【问题讨论】:

    标签: android parsing xml-parsing


    【解决方案1】:

    如果你想解析特定节点,那么你需要像这样移动到那个节点,

       NodeList row_nodes = document.getElementsByTagName("Row");
                       for (int i = row_id; i < row_nodes.getLength();) {
                               org.w3c.dom.Element row_element = (org.w3c.dom.Element) row_nodes                                            .item(i);
    
    
                               break;
                       }
    

    这里row_id 是特定节点的编号 比如,如果row_id 为 0,那么它将解析

    <Row>
    <Kota>Wates</Kota>
    ...
    </Row>
    

    如果row_id 为 1 则解析

    <Row>
    <Kota>Bantul</Kota>
    ...
    </Row>
    

    如果row_id 是 2 那么它会解析

    <Row>
    <Kota>Wonosari</Kota>
    ...
    </Row>
    

    希望对你有帮助,

    【讨论】:

    • 我只是试试你告诉我的,但是当我运行模拟器时只显示白屏。你能告诉我我哪里错了吗?这是我的代码 NodeList row_nodes = doc.getElementsByTagName(KEY_ROW); ... 休息; protected void onPostExecute(String file_url) { pDialog.dismiss(); runOnUiThread(new Runnable() { ListAdapter adapter = SimpleAdapter(MainActivity.this,menuItems, R.layout.list_kota, new String[] {KEY_KOTA, ... }, new int[] { R.id.kota, ... }); setListAdapter(适配器);