0

Dom Parser を使用して特定の xml ファイルを解析したいと考えています。アプリの記事に xml パーサーを使用しています。画像にxmlパーサーを使用するにはどうすればよいですか?

new Thread(new Runnable() {
    @Override
    public void run() {
    try {
        URL url = new URL("http://........");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new InputSource(url.openStream()));
        doc.getDocumentElement().normalize();

        final NodeList nodeList = doc.getElementsByTagName("Article");

        /** Assign textview array lenght by arraylist size */

        nasional.this.runOnUiThread(new Runnable() {
            public void run() {
                for (int i = 0; i < nodeList.getLength(); i++)
                {
                    Node node = nodeList.item(i);
                    Element fstElmnt = (Element) node;

                    nameList = fstElmnt.getElementsByTagName("Headline");
                    Element nameElement = (Element) nameList.item(0);
                    nameList = nameElement.getChildNodes();

                    datelist = fstElmnt.getElementsByTagName("ArticleDate");
                    Element dateElement = (Element) datelist.item(0);
                    datelist = dateElement.getChildNodes();

                    imglist = fstElmnt.getElementsByTagName("ImageURL");
                    Element imgElement = (Element) imglist.item(0);
                    imglist = imgElement.getChildNodes();

                    View root   = inflater.inflate(R.layout.list_item, null);

                    TextView title = (TextView) root.findViewById(R.id.title);
                    title.setText(((Node) nameList.item(0)).getNodeValue());

                    TextView date = (TextView) root.findViewById(R.id.date);
                    date.setText(((Node) datelist.item(0)).getNodeValue());


                    ImageView image = (ImageView) root.findViewById(R.id.list_image);
                    image(((Node) imglist.item(0)).getNodeValue());

                    list.addView(root);
                }
            }               
        });

    } catch (Exception e) {
        System.out.println("XML Pasing Excpetion = " + e);
    }
    }
}).run();
}
4

1 に答える 1

0

あなたの質問が正確に何であるかは明確ではありませんが、UI 要素への呼び出しでスレッドがクラッシュしていると思われます。UI スレッドからのみ UI を変更できます。これにはさまざまな方法がありますが、いつどのように XML を解析するかを念頭に置いてください。

一度解析して結果をメモリに保持する場合は、次の使用を検討する必要があります。

  • 結果が配信されるローダーonLoaderFinished()
  • BroadcastReceiver の Intent を介して結果が配信されるサービス

デバイスが回転するか、アクティビティが再作成されるたびに XML が再解析されることを気にしない場合は、次の使用を検討できます。

  • 結果が配信される AsyncTaskonPostExecute()
  • 結果がハンドラーを介して配信されるスレッド
于 2014-01-02T16:52:02.897 に答える