Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.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 XML解析类强制转换异常_Android_Xml Parsing_Classcastexception - Fatal编程技术网

Android XML解析类强制转换异常

Android XML解析类强制转换异常,android,xml-parsing,classcastexception,Android,Xml Parsing,Classcastexception,实际上,我对xml解析还不熟悉,所以请告诉我问题出在哪里我建议您使用XMLPullParser,因为它比SAX和DOM解析器更快 下面是XMLPullParserHandler类- `NodeList costList = fstElmnt.getElementsByTagName("NewLimit"); Element costElement = (Element) costList1.item(0);` 下面是XMLPullParser类 pub

实际上,我对xml解析还不熟悉,所以请告诉我问题出在哪里

我建议您使用XMLPullParser,因为它比SAX和DOM解析器更快

下面是XMLPullParserHandler类-

`NodeList costList = fstElmnt.getElementsByTagName("NewLimit");
                    Element costElement = (Element) costList1.item(0);` 
下面是XMLPullParser类

public class XmlPullParserHandler {

String text;
StringBuilder builder = new StringBuilder();

public String parse(InputStream is) {

    try {

        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser parser = factory.newPullParser();

        parser.setInput(is, null);

        int eventType = parser.getEventType();

        while (eventType != XmlPullParser.END_DOCUMENT) {
            String tagname = parser.getName();
            switch (eventType) {

                case XmlPullParser.TEXT:
                    text = parser.getText();
                    break;

                case XmlPullParser.END_TAG:
                    if (tagname.equalsIgnoreCase("SeenStatus")) {
                        builder.append("SeenStatus = " + text);
                    } else if (tagname.equalsIgnoreCase("NewLimit")) {
                        builder.append("\nNewLimit = " + text);
                    }
                    break;

                default:
                    break;
            }
            eventType = parser.next();
        }

    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }

    return builder.toString();
}


}

我已从资产中获取xml,但您只需传递返回的响应Inputstream即可成功解析它。

Change
Element costElement=(Element)costList1.item(0)
元素成本元素=(元素)成本列表。项目(0)和获取问题的行
元素costElement=(元素)costList1.项(0)这一行有错误,有两个子标记,因此两个元素
costElement
costElement1
都是必需的。我认为这个问题是由于服务器端的某些数据类型问题造成的……是的,问题解决了,这个问题是由于服务器端的一些数据类型问题引起的…在服务器端做了一些更改,谢谢我会尝试,但实际上我的问题是强制转换异常。。使用XMLPullParser它会消失吗?@sud:我已经解析了你在Q中提到的xml,它解析成功了。
`NodeList costList = fstElmnt.getElementsByTagName("NewLimit");
                    Element costElement = (Element) costList1.item(0);` 
public class XmlPullParserHandler {

String text;
StringBuilder builder = new StringBuilder();

public String parse(InputStream is) {

    try {

        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser parser = factory.newPullParser();

        parser.setInput(is, null);

        int eventType = parser.getEventType();

        while (eventType != XmlPullParser.END_DOCUMENT) {
            String tagname = parser.getName();
            switch (eventType) {

                case XmlPullParser.TEXT:
                    text = parser.getText();
                    break;

                case XmlPullParser.END_TAG:
                    if (tagname.equalsIgnoreCase("SeenStatus")) {
                        builder.append("SeenStatus = " + text);
                    } else if (tagname.equalsIgnoreCase("NewLimit")) {
                        builder.append("\nNewLimit = " + text);
                    }
                    break;

                default:
                    break;
            }
            eventType = parser.next();
        }

    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }

    return builder.toString();
}


}
public class XMLPullParser extends AppCompatActivity {

TextView txtXML;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_xmlpull_parser);


    txtXML = (TextView) findViewById(R.id.txtXML);

    try {

        XmlPullParserHandler parser = new XmlPullParserHandler();
        InputStream is = getAssets().open("sampleXML.xml");

        String xmlOutput = parser.parse(is);
        txtXML.setText(xmlOutput);

    } catch (IOException e) {
        e.printStackTrace();
    }


}

}