簡體   English   中英

無法使用SAX XML解析器(Android)解析父/子元素

[英]Unable to Parse Parent / Child Elements using SAX XML Parser (Android)

我正在嘗試遵循以下SAX XML解析器示例: 如何使用SAX解析器解析XML

但是,在調試時-有些項目返回null。 我已驗證它們是否包含在我要連接的XML文件中-但我相信我設置了我的getVideos / setVideos參數錯誤,並且不確定如何更正它們。

XML數據

此XML文件似乎沒有與之關聯的任何樣式信息。 文檔樹如下所示。

<response>
<cmd>getVideos</cmd>
<success>1</success>
<NumberOfVideos>4</NumberOfVideos>
<Videos>
<Video>
<VideoName>sample_iPod</VideoName>
<VideoDesc/>
<VideoUrl>
http://mobile.example.com/omv/wp-content/uploads/sites/6/2014/01/omv/1/06087297988b.m4v
</VideoUrl>
<VideoTags/>
</Video>
<Video>
<VideoName>sample_mpeg4</VideoName>
<VideoDesc/>
<VideoUrl>
http://mobile.example.com/omv/wp-content/uploads/sites/6/2014/01/omv/1/b5ed9e7100e2.mp4
</VideoUrl>
<VideoTags/>
</Video>
<Video>
<VideoName>sample_sorenson</VideoName>
<VideoDesc/>
<VideoUrl>
http://mobile.example.com/omv/wp-content/uploads/sites/6/2014/01/omv/1/2a8e64b24997.mov
</VideoUrl>
<VideoTags/>
</Video>
<Video>
<VideoName>sample_iTunes</VideoName>
<VideoDesc/>
<VideoUrl>
http://mobile.example.com/omv/wp-content/uploads/sites/6/2014/01/omv/1/6c7f65254aad.mov
</VideoUrl>
<VideoTags/>
</Video>
</Videos>
</response>

SAX解析器相關的Java:

public void endElement(String uri, String localName, String qName)
        throws SAXException {

    if (qName.equalsIgnoreCase("response")) {
        // add it to the list
        response.add(cmd);
    } else if (qName.equalsIgnoreCase("success")) {
        cmd.setSuccess(tempVal);
    } else if (qName.equalsIgnoreCase("numberofvideos")) {
        cmd.setNumberOfVideos(tempVal);
    } else if (qName.equalsIgnoreCase("videos")) {
        cmd.setVideos(tempVal);
    } else if (qName.equalsIgnoreCase("video")) {
        cmd.setVideo(tempVal);
    } else if (qName.equalsIgnoreCase("videoname")) {
        cmd.setVideoName(tempVal);
    } else if (qName.equalsIgnoreCase("videourl")) {
        cmd.setVideoURL(tempVal);

    }

...

public class SAXXMLParser { 
    public static List<Cmd> parse(InputStream is) {
        List<Cmd> response = 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));
            // get the `Video list`
            response = saxHandler.getResponse();

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

        // return Laptop list
        return response;
    }
}

...

 public class Cmd {
private String success;
private String cmd;
private String videos;
private String video;
private String numberofvideos;
private String videoname;
private String videourl;


public String getCmd() {
    return cmd;
}

public void setCmd(String cmd) {
    this.cmd = cmd;
}
public String getSuccess() {
    return success;
}

public void setSuccess(String success) {
    this.success = success;
}

public String getNumberOfVideos() {
    return numberofvideos;
}
public void setNumberOfVideos(String numberofvideos) {
    this.numberofvideos = numberofvideos;
}
public String getVideos() {
    return videos;
}
public void setVideos(String videos) {
    this.videos = videos;
}
public String getVideo() {
    return video;
}
public void setVideo(String video) {
    this.video = video;
}
public String getVideoName() {
    return videoname;
}

public void setVideoName(String videoname) {
    this.videoname = videoname;
}
public String getVideoURL() {
    return videourl;
}

public void setVideoURL(String videourl) {
    this.video = videourl;
}

請讓我知道是否需要任何其他信息。 我很樂意提供。

您的代碼在setvideourl方法中設置了成員視頻,而不是videourl。public void setVideoURL(String videourl){this.video = videourl; << ---- This.videourl = videourl; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM