0

次の形式の 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>

これらのデータと画像リンクも解析し、アダプターを使用して listView に入れたい。

<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>

写真は @+id/thumb ImageView、タイトルは @id/title TextView、pubdate は @date TextView を取る必要があります

ありがとうございました

4

1 に答える 1

1

Android : XML ファイルからの画像とデータの解析

したがって、最初に、データソースがインターネット上にある場合は、次の作業のためにそれをフェッチする必要があります。このためHttpClientに、適切なGETリクエストで使用してから、レスポンスから取得できますXML

次に、XML パーサーを使用する必要があります。クラシックDOM Parserを使用して目標を達成できます。まず、次のアイテムの要素を取得してから、単純NodeListに取得する必要があります。<items>

擬似コード:

インターネットからデータを取得:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(<url>);
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
String xml = EntityUtils.toString(entity);

XML を文字列として持っている場合は、その新しいものから作成してDOM Document解析を開始できます。

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");
}

補助メソッド getElementValue()

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 "";
}

ノート:

最後に、ネットワーク操作を実行している場合は、コードを分離/バックグラウンド スレッドに配置する必要があり、最良の選択は

于 2013-03-25T18:11:35.657 に答える