Android:解析XML文件中的图片和数据

Android:解析XML文件中的图片和数据,android,xml,image,rss,adapter,Android,Xml,Image,Rss,Adapter,我有一个以下格式的xml文件: <rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"> <channel> <item> <cache>0</cache> <id>v_article_16276.html</id> <article_id>16276</article_id> <type>article&l

我有一个以下格式的xml文件:

<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
<channel>
<item>
<cache>0</cache>
<id>v_article_16276.html</id>
<article_id>16276</article_id>
<type>article</type>
<img>
http://www.mywebsite.com/image.jpg
</img>
<datePub>
<![CDATA[ 25.03.2013 | 17h37 | Par Fabrice Antonio ]]>
</datePub>
</item>
</channel>
</rss>

0
v_article_16276.html
16276
文章
图片必须采用@+id/thumb图像视图,title采用@id/title TextView,pubdate采用@date TextView

多谢各位

Android:解析XML文件中的图片和数据

所以,首先,若你们的数据源被放在互联网上,你们需要获取它以备下一步工作。为此,您可以将
HttpClient
与适当的
GET
请求一起使用,然后从响应
XML
中进行绘图

然后需要使用一些XML解析器。您可以使用classic
DOM解析器来实现您的目标。首先,您需要获取
节点列表
,然后只需获取下一项的元素

伪代码:

从Internet获取数据:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="2dp" >

    <ImageView
        android:id="@+id/thumb"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:contentDescription="@string/app_name"
        android:src="@drawable/ic_launcher" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_toLeftOf="@+id/arrow"
        android:layout_toRightOf="@+id/thumb"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="2"
            android:text="@string/title"
            android:textSize="16sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginTop="5dp"
            android:padding="2dp"
            android:text="@string/date"
            android:textColor="#7F7F7F"
            android:textSize="10sp" />
    </RelativeLayout>

    <ImageView
        android:id="@+id/arrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp"
        android:contentDescription="@string/app_name"
        android:src="@drawable/arrow_next" />

</RelativeLayout>
帮助方法getElementValue()

注: 最后,如果您正在执行网络操作,您必须将代码放在单独的/后台线程中,最好的选择是

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(<url>);
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
String xml = EntityUtils.toString(entity);
Document doc = null;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xml));
doc = builder.parse(is);

NodeList nodeList = doc.getElementsByTagName("item");
for (int i = 0; i < nodeList.getLength(); i++) {
    Element e = (Element) nodeList.item(i);
    String img = getElementValue(e, "img");
    String pubDate = getElementValue(e, "datePub");
    String type = getElementValue(e, "type");
}
public String getElementValue(Element e, String key) {
    NodeList nodes = e.getElementsByTagName(key);
    Node n = nodes.item(0);
    if (n != null) {
        return n.getFirstChild().getNodeValue();
    }
    return "";
}