0

これは、インターネット上の URL にある私の xml コンテンツです。

<skus>
    <item>
        <id>r_1</id>
        <size>10</size>
    </item>
    <item>
        <id>c_1</id>
        <size>10</size>
    </item>
    <item>
        <id>d_1</id>
        <size>10</size>
    </item>
    <item>
        <id>e_1</id>
        <size>10</size>
    </item>
    <item>
        <id>f_1</id>
        <size>10</size>
    </item>
</skus>

これは SAXXMLParser クラスです:

public class SAXXMLParser {

    public static List<XMLSetAdd> parse(InputStream is) {
        List<XMLSetAdd> setAdds = null;
        try {
            // create a XMLReader from SAXParser
            XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser()
                    .getXMLReader();
            // create a SAXXMLHandler
            SAXXMLHANDLER saxHandler = new SAXXMLHANDLER();
            // store handler in XMLReader
            xmlReader.setContentHandler(saxHandler);
            // the process starts
            xmlReader.parse(new InputSource(is));
            // getting the list`
            setAdds = saxHandler.getIds();

        } catch (Exception ex) {
            Log.d("XML", "SAXXMLParser: parse() failed");
            ex.printStackTrace();
        }

        // return The list
        return setAdds;
    }

}

これは私の XMLSetAdd クラスです:

public class XMLSetAdd {

    public String getId() {
        return Id;
    }

    public void setId(String Id) {
        this.Id = Id;
    }

    public String getSize(){
        return Size;
    }

    public void setSize(String Size){
        this.Size = Size;
    }

    private String Id;
    private String Size;
}

そして、これは私の SAXXMLHANDLER です:

public class SAXXMLHANDLER extends DefaultHandler {

    private List<XMLSetAdd> setAdds;
    private String tempVal;
    // to maintain context
    private XMLSetAdd setAdd;

    public SAXXMLHANDLER() {
        setAdds = new ArrayList<XMLSetAdd>();
    }

    public List<XMLSetAdd> getIds() {
        return setAdds;
    }

    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        tempVal = "";
        if (qName.equals("skus")){

        }else if (qName.equals("item")){
            setAdd = new XMLSetAdd();
        }
    }

    public void characters(char[] ch, int start, int length)
            throws SAXException {
        tempVal = new String(ch, start, length);
    }

    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        if (qName.equals("item")) {
            setAdds.add(setAdd);
        } else if (qName.equals("id")) {
            setAdd.setId(tempVal);
        } else if (qName.equals("size")){
            setAdd.setSize(tempVal);
        } 
    }

}

そして最後に、それを使用するという点で:

XML コンテンツを読み取り、リスト内に入力する目的で非同期タスクがあります。このコードを実行すると得られる結果は、r_1 である「ONE ROW」です。一方、5 つの結果を返す必要があります。(私もサイズ値を受信しません)

コードのどの部分が間違っているのかわかりません!

4

1 に答える 1