无法使用SAX XML Parser(Android)解析父/子元素

时间:2014-02-03 22:36:21

标签: java android xml parsing saxparser

我正在尝试关注SAX XML Parser的这个示例:How to parse XML using the SAX parser

但是在调试时 - 某些项目返回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 Parser Related 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;
}

如果需要任何其他信息,请与我们联系。我很乐意提供。

1 个答案:

答案 0 :(得分:0)

您的代码在setvideourl方法中设置成员视频而不是videourl public void setVideoURL(String videourl){     this.video = videourl;&lt;&lt; ----     This.videourl = videourl; }