1

FL タグを複数回取得しようとしていますが、内側のノード リストを取得しようとすると、最初の項目のみが取得されます。詳細については、私の出力を参照してください。これは、Web サービスから取得した XML データです

<response uri="/ats/private/xml/JobOpenings/getRecords">
    <result>
        <JobOpenings>
            <row no="1">
                <FL val="JOBOPENINGID">
                    <![CDATA[ 100 ]]>
                </FL>
                <FL val="Published in website">
                    <![CDATA[ true ]]>
                </FL>
                <FL val="Modified by">
                    <![CDATA[ Admmin ]]>
                </FL>
                <FL val="Modified time">
                    <![CDATA[ Yesterday ]]>
                </FL>
            </row>
            <row no="2">
                <FL val="JOBOPENINGID">
                    <![CDATA[ 101 ]]>
                </FL>
                <FL val="Published in website">
                    <![CDATA[ true ]]>
                </FL>
                <FL val="Modified by">
                    <![CDATA[ Admin ]]>
                </FL>
                <FL val="Modified time">
                    <![CDATA[ 2 Days Ago ]]>
                </FL>
            </row>
            <row no="3">
                <FL val="JOBOPENINGID">
                    <![CDATA[ 102 ]]>
                </FL>
                <FL val="Published in website">
                    <![CDATA[ true ]]>
                </FL>
                <FL val="Modified by">
                    <![CDATA[ Admin ]]>
                </FL>
                <FL val="Modified time">
                    <![CDATA[ 2 Days Ago ]]>
                </FL>
            </row>
        <JobOpenings>
    <result>
</response>

そして、これは私のアクティビティで使用したコードです

public class AndroidXMLParsingActivity extends ListActivity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        XMLParser parser = new XMLParser();
        String xml = parser.getXmlFromUrl(AppConfig.URL); // getting XML
        Document doc = parser.getDomElement(xml); // getting DOM element

        NodeList nodeList = doc.getElementsByTagName("row");

        for (int i = 0; i < nodeList.getLength(); i++) {

            Node node = nodeList.item(i);

            Element playlistElement = (Element) node;

            NodeList title = playlistElement.getElementsByTagName("FL");

            for (int kl = 0; kl < title.getLength(); kl++) {

                if (title.item(0).getChildNodes().item(0) != null) {

                    Element nameElement = (Element) title.item(0);
                    title = nameElement.getChildNodes();
                    Log.v("name===>", ((Node) title.item(0)).getNodeValue());

                }
            }

        }

    }
}

出力は次のとおりです。

12-04 15:56:08.694: V/name===>(3918): JOBOPENINGID  100
12-04 15:56:08.694: V/name===>(3918): JOBOPENINGID  101
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID  102
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID  103
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID  107
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID  108
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID  118
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID  200

お願い助けて............

4

2 に答える 2

1

XML の解析にXmlPullParserを使用するのはなぜですか? 私はあなたのバージョンを使用したことはありませんが、 (たとえば)XmlPullParserに焦点を合わせてから、見つけたいタグの名前を書くように指示するので、それはより良い仕事をするように思えます(あなたの例では FL)。START_TAG

XPPをするかというと、彼は XML 文書全体を読み、指定された を検索しますSTART_TAG。見つかったら、switchケース内で好きなことをすることができます。

于 2014-12-04T10:41:51.503 に答える
0

ループでタイトルを上書きしている可能性があります:

if (title.item(0).getChildNodes().item(0) != null) {
   Log.v("name===>", ((Node) title.item(0).getChildNodes()).getNodeValue());
}
于 2014-12-04T10:42:53.217 に答える