Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用SAX解析从XML检索数据时,只会重定时第一个和最后一个值_Android - Fatal编程技术网

Android 使用SAX解析从XML检索数据时,只会重定时第一个和最后一个值

Android 使用SAX解析从XML检索数据时,只会重定时第一个和最后一个值,android,Android,我正在解析来自如下所示的web服务的数据:我只能解析status和bal这两个值,接下来是null指针异常。 我只能检索状态和名称。有人能告诉我这有什么问题吗。我越来越 status=1正确,bal=Finn,其余为null XML: } 塞特-盖特: 公共类站点列表1{ private String status; private String bal; private String cur; private String acc; private String fname; private

我正在解析来自如下所示的web服务的数据:我只能解析status和bal这两个值,接下来是null指针异常。 我只能检索状态和名称。有人能告诉我这有什么问题吗。我越来越 status=1正确,bal=Finn,其余为null

XML:

}

塞特-盖特:

公共类站点列表1{

private String status;
private String bal;
private String cur;
private String acc;
private String fname;
private String lname;
public String getStatus() {
    return status;
}
public void setStatus(String status) {
    this.status = status;
}
public String getBal() {
    return bal;
}
public void setBal(String bal) {
    this.bal = bal;
}
public String getCur() {
    return cur;
}
public void setCur(String cur) {
    this.cur = cur;
}
public String getAcc() {
    return acc;
}
public void setAcc(String acc) {
    this.acc = acc;
}
public String getFname() {
    return fname;
}
public void setFname(String fname) {
    this.fname = fname;
}
public String getLname() {
    return lname;
}
public void setLname(String lname) {
    this.lname = lname;
}

}问题出在您的
字符方法中。您没有正确重置当前值。请尝试以下方法:

public void characters(char[] ch, int start, int length)
            throws SAXException {
  super.characters(ch, start, length);
  currentValue.append(ch, start, length);
}

public void startDocument() throws SAXException {
super.startDocument();
currentValue= new StringBuilder();
}
然后,在
endElement
方法中,可以执行以下操作:

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

    currentElement = false;

    if (localName.equalsIgnoreCase("status"))
        sitesList1.setStatus(currentValue.toString());
    else if (localName.equalsIgnoreCase("bal"))
        sitesList1.setBal(currentValue.toString());
    else if (localName.equalsIgnoreCase("cur"))
        sitesList1.setCur(currentValue.toString());
    else if (localName.equalsIgnoreCase("acc"))
        sitesList1.setAcc(currentValue.toString());
    else if (localName.equalsIgnoreCase("fname"))
        sitesList1.setFname(currentValue.toString());
    else if (localName.equalsIgnoreCase("lname"))
        sitesList1.setLname(currentValue.toString());

   //flush out the StringBuilder so you can start again
   curentValue.setLength(0);

}

我刚刚注意到,在你的if/else声明中,你都称之为“挫折”。你需要打电话给合适的设定者。
private String status;
private String bal;
private String cur;
private String acc;
private String fname;
private String lname;
public String getStatus() {
    return status;
}
public void setStatus(String status) {
    this.status = status;
}
public String getBal() {
    return bal;
}
public void setBal(String bal) {
    this.bal = bal;
}
public String getCur() {
    return cur;
}
public void setCur(String cur) {
    this.cur = cur;
}
public String getAcc() {
    return acc;
}
public void setAcc(String acc) {
    this.acc = acc;
}
public String getFname() {
    return fname;
}
public void setFname(String fname) {
    this.fname = fname;
}
public String getLname() {
    return lname;
}
public void setLname(String lname) {
    this.lname = lname;
}
public void characters(char[] ch, int start, int length)
            throws SAXException {
  super.characters(ch, start, length);
  currentValue.append(ch, start, length);
}

public void startDocument() throws SAXException {
super.startDocument();
currentValue= new StringBuilder();
}
public void endElement(String uri, String localName, String qName)
        throws SAXException {

    currentElement = false;

    if (localName.equalsIgnoreCase("status"))
        sitesList1.setStatus(currentValue.toString());
    else if (localName.equalsIgnoreCase("bal"))
        sitesList1.setBal(currentValue.toString());
    else if (localName.equalsIgnoreCase("cur"))
        sitesList1.setCur(currentValue.toString());
    else if (localName.equalsIgnoreCase("acc"))
        sitesList1.setAcc(currentValue.toString());
    else if (localName.equalsIgnoreCase("fname"))
        sitesList1.setFname(currentValue.toString());
    else if (localName.equalsIgnoreCase("lname"))
        sitesList1.setLname(currentValue.toString());

   //flush out the StringBuilder so you can start again
   curentValue.setLength(0);

}