1

Androidでxmlファイルを読むのは初めてです。これについてグーグルで調べましたが、適切な解決策を得ることができませんでした。

このxmlファイルを解析したい

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>aaaa</key>
        <array>
                <string>b</string>
                <string>c</string>
                <string>d</string>
                <string>e</string>
                <string>f</string>
        </array>
        <key>bbbb</key>
        <array>
                <string>g</string>
                <string>h</string>
                <string>i</string>
                <string>j</string>
                <string>k</string>
        </array>
</dict>
</plist>

解析後、次の対応を取得したいと考えています。

aaaa [b,c,d,e,f] -> リスト/配列

bbbb [g,h,i,j,k] -> リスト/配列

つまり、すべての文字列 (キー) は、そのキー内の文字列の配列に対応する必要があります。

どうすればいいのですか?また、xml ファイルを配置する場所を知りたいです。(それは res/raw/ フォルダーにありますか? はいの場合、ファイルのアドレスは何でしょうか?)

4

1 に答える 1

2

自分でそれを行うための最初の抽選:

public final class XMLManager {


public static HashMap<String, ArrayList<String>> getHmPlist(){

    HashMap<String, ArrayList<String>> hmPlist = null;

    try {


        hmPlist = new HashMap<>();
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("D:\\Loic_Workspace\\Test2\\res\\test.xml"));
        NodeList ndList = doc.getElementsByTagName("key");
        Integer keyLength = ndList.getLength();
        String keyValue = null;
        NodeList ndArray = null;
        Integer ndArrayLength = null;
        ArrayList<String> alElement = null;

        for(int i=0;i<keyLength;i++){
            alElement = new ArrayList<>();
            keyValue = ndList.item(i).getTextContent();
            if(keyValue != null){
                ndArray = ndList.item(i).getNextSibling().getNextSibling().getChildNodes();
                ndArrayLength = ndArray.getLength();
                for(int j=0;j<ndArrayLength;j++){

                    if(ndArray.item(j).getNodeName().equalsIgnoreCase("string")){
                        alElement.add(ndArray.item(j).getFirstChild().getTextContent());
                    }

                }

                hmPlist.put(keyValue, alElement);

            }

        }


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SAXException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return hmPlist;

}



}

res/raw/ フォルダーに関する質問に答えるために。はい、そのフォルダーに XML を配置し、R クラスを介して Java コードで使用する必要があります。

それが役に立てば幸い、

于 2013-01-28T14:41:59.167 に答える