Java 尝试解析Xml文件时发生Android Xml Pull解析器异常
当我尝试使用xml拉式解析器解析xml文件时,遇到了一个异常。异常表示XmlPullParserException:意外标记(位置:java.io中的TEXT@1:2)。stringreader@40e06970 请给我一个解决方案,我的代码是 mainavity.javaJava 尝试解析Xml文件时发生Android Xml Pull解析器异常,java,android,xml,parsing,exception,Java,Android,Xml,Parsing,Exception,当我尝试使用xml拉式解析器解析xml文件时,遇到了一个异常。异常表示XmlPullParserException:意外标记(位置:java.io中的TEXT@1:2)。stringreader@40e06970 请给我一个解决方案,我的代码是 mainavity.java package com.example.simplexmlpullapp; import java.io.BufferedReader; import java.io.File; import java.io.IOExce
package com.example.simplexmlpullapp;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
ListView list;
String str;
ArrayList<Data> arrdata;
ArrayList<String> arrayofString;
String textforinput = "<foo>Hello World!</foo>";
String parsedData = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
readXML();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void readXML() throws XmlPullParserException {
try {
Log.i("String","in readXML");
InputStream is = getAssets().open("countries.xml");
BufferedReader br=new BufferedReader(new InputStreamReader(is));
StringBuilder total=new StringBuilder();
String line;
while((line=br.readLine())!=null)
{
total.append(line);
}
Log.i("String","going in xml parsing"+total);
xmlParse(total.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void xmlParse(String file) throws XmlPullParserException, IOException
{
Log.i("String","going in xml parse");
boolean demoflag=false;
Data d=null;
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader(file));
int eventType = xpp.getEventType();
while (eventType!=XmlPullParser.END_DOCUMENT) {
Log.i("String","in while");
switch(eventType)
{
case XmlPullParser.START_DOCUMENT:
break;
//System.out.println("Start document");
case XmlPullParser.START_TAG:
if(xpp.getName().equalsIgnoreCase("country"))
{
demoflag=true;
d=new Data();
}
break;
case XmlPullParser.TEXT:
if(demoflag)
{
d.setCountry(xpp.getText().trim());
Log.i("country", ""+xpp.getText().trim());
}
break;
case XmlPullParser.END_TAG:
if(xpp.getName().equalsIgnoreCase("country"))
{
arrdata.add(d);
demoflag=false;
}
break;
default :
break;
}
eventType=xpp.next();
}
arrayofString=new ArrayList<String>();
for(int i=0;i<arrdata.size();i++)
{
Data data=arrdata.get(i);
arrayofString.add(data.getCountry());
Log.i("parse_example", "country"+data.getCountry());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
package com.example.simplexmlpullapp;
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.StringReader;
导入java.util.ArrayList;
导入org.xmlpull.v1.XmlPullParser;
导入org.xmlpull.v1.XmlPullParserException;
导入org.xmlpull.v1.XmlPullParserFactory;
导入android.os.Bundle;
导入android.app.Activity;
导入android.util.Log;
导入android.view.Menu;
导入android.widget.ListView;
导入android.widget.TextView;
公共类MainActivity扩展了活动{
列表视图列表;
字符串str;
ArrayList arrdata;
ArrayList arrayofString;
String textforinput=“你好,世界!”;
字符串parsedData=“”;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
试一试{
readXML();
}catch(XMLPullParseRexE){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
私有void readXML()引发XmlPullParserException{
试一试{
Log.i(“字符串”,“在readXML中”);
InputStream is=getAssets().open(“countries.xml”);
BufferedReader br=新的BufferedReader(新的InputStreamReader(is));
StringBuilder总计=新StringBuilder();
弦线;
而((line=br.readLine())!=null)
{
合计.追加(行);
}
Log.i(“字符串”、“进行xml解析”+总计);
xmlParse(total.toString());
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
public void xmlParse(字符串文件)抛出XmlPullParserException,IOException
{
i(“字符串”,“进入xml解析”);
布尔demoflag=false;
数据d=null;
XmlPullParserFactory工厂=XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp=factory.newPullParser();
setInput(新的StringReader(文件));
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_文档){
Log.i(“String”、“in while”);
开关(事件类型)
{
案例XmlPullParser.START_文档:
打破
//System.out.println(“开始文档”);
case XmlPullParser.START_标记:
if(xpp.getName().equalsIgnoreCase(“国家”))
{
demoflag=true;
d=新数据();
}
打破
case XmlPullParser.TEXT:
if(demoflag)
{
d、 setCountry(xpp.getText().trim());
Log.i(“国家”,“xpp.getText().trim());
}
打破
case XmlPullParser.END_标记:
if(xpp.getName().equalsIgnoreCase(“国家”))
{
添加(d);
demoflag=false;
}
打破
违约:
打破
}
eventType=xpp.next();
}
arrayofString=新的ArrayList();
对于(int i=0;i国家/地区列表标记未结束
</CountriesList>
谢谢,伙计。那个标签已经结束了。然后问题就出现了。问题仍然存在。谢谢比拉杰。结束了。
</CountriesList>
<CountriesList>
<countries>
<country>
Afghanistan
</country>
</countries>
<countries>
<country>
Albania
</country>
</countries>
<countries>
<country>
Algeria
</country>
</countries>
</CountriesList>
public void xmlParse(String file) throws XmlPullParserException, IOException {
Log.i("String", "going in xml parse");
boolean demoflag = false;
Data d = null;
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader(file));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
Log.i("String", "in while");
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if (xpp.getName().equalsIgnoreCase("country")) {
demoflag = true;
}
break;
case XmlPullParser.TEXT:
if (demoflag) {
Log.i("country", "" + xpp.getText().trim());
}
break;
case XmlPullParser.END_TAG:
if (xpp.getName().equalsIgnoreCase("country")) {
demoflag = false;
}
break;
default:
break;
}
eventType = xpp.next();
}
}