Android 如何解析这个xml文件?
如何在android中解析具有这种结构的文件 请帮忙 我尝试了很多,但是我无法在Android上解析这个文件Android 如何解析这个xml文件?,android,xml,xml-parsing,Android,Xml,Xml Parsing,如何在android中解析具有这种结构的文件 请帮忙 我尝试了很多,但是我无法在Android上解析这个文件 这是我的代码: 我的类名是XmlReader 我在onCreate()方法中使用这个类 公共类XmlReader { 列出季节; 私人赛季; 私有字符串文本; 公共XmlReader() { 季节=新阵列列表(); } 公众名单{ 回归季节; } 公共列表解析(InputStream为){ XmlPullParserFactory工厂=null; XmlPullParser=null
这是我的代码:
我的类名是XmlReader
我在onCreate()方法中使用这个类
公共类XmlReader
{
列出季节;
私人赛季;
私有字符串文本;
公共XmlReader()
{
季节=新阵列列表();
}
公众名单{
回归季节;
}
公共列表解析(InputStream为){
XmlPullParserFactory工厂=null;
XmlPullParser=null;
试一试{
factory=XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
parser=factory.newPullParser();
setInput(is,null);
int eventType=parser.getEventType();
while(eventType!=XmlPullParser.END_文档)
{
字符串标记名=parser.getName();
开关(事件类型)
{
case XmlPullParser.START_标记:
if(标记名.equalsIgnoreCase(“季节”))
{
季节=新季节();
season_id((Integer.parseInt(parser.getAttributeValue(0)));
season_名称(parser.getAttributeValue(1));
}
打破
case XmlPullParser.END_标记:
if(标记名.equalsIgnoreCase(“季节”))
{
季节。添加(季节);
}
else if(标记名.equalsIgnoreCase(“页面”))
{
setPage_id(Integer.parseInt(parser.getAttributeValue(0));
setPage_text(parser.getAttributeValue(1));
}
打破
违约:
打破
}
eventType=parser.next();
}
}
捕获(XmlPullParserException | IOE异常)
{
e、 printStackTrace();
}
回归季节;
}
}
您可能一直在寻找的是DOM解析器。DOM解析器可以将XML或HTML源解析为DOM文档。试试这个
try {
InputStream mInputStream = getAssets().open("XmlData.xml");
XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
XmlPullParser myparser = xmlFactoryObject.newPullParser();
myparser.setInput(mInputStream, null);
int event = myparser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
String name=myparser.getName();
switch (event){
case XmlPullParser.START_TAG:
break;
case XmlPullParser.END_TAG:
if(name.equals("page")){
Log.e("TAG",""+ myparser.getAttributeValue(null,"id"));
Log.e("Page content ",""+ myparser.getAttributeValue(null,"text"));
}
break;
}
event = myparser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
你使用了什么进行解析?显示你的代码tried@mohammadkiani发布你的代码,
我尝试了很多
展示了具体的操作方法,我们将帮助修复它。你不应该要求完整的代码,我们只能帮助修复你的代码。请将你的代码添加到问题中。不是指向代码的链接。这对我没用,谢谢。该代码适用于mewelcome@mohammadkiani
public class XmlReader
{
List<Season> Seasons;
private Season season;
private String text;
public XmlReader()
{
Seasons = new ArrayList<Season>();
}
public List<Season> getSeasons() {
return Seasons;
}
public List<Season> parse(InputStream is){
XmlPullParserFactory factory = null;
XmlPullParser parser = null;
try {
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
parser = factory.newPullParser();
parser.setInput(is, null);
int eventType = parser.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT)
{
String tagname = parser.getName();
switch (eventType)
{
case XmlPullParser.START_TAG:
if (tagname.equalsIgnoreCase("season"))
{
season = new Season();
season.setSeason_id( (Integer.parseInt(parser.getAttributeValue(0)) ) );
season.setSeason_name( parser.getAttributeValue(1) );
}
break;
case XmlPullParser.END_TAG:
if (tagname.equalsIgnoreCase("season"))
{
seasons.add(season);
}
else if (tagname.equalsIgnoreCase("page"))
{
season.setPage_id(Integer.parseInt(parser.getAttributeValue(0)));
season.setPage_text( parser.getAttributeValue(1) );
}
break;
default:
break;
}
eventType=parser.next();
}
}
catch (XmlPullParserException | IOException e)
{
e.printStackTrace();
}
return season;
}
}
try {
InputStream mInputStream = getAssets().open("XmlData.xml");
XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
XmlPullParser myparser = xmlFactoryObject.newPullParser();
myparser.setInput(mInputStream, null);
int event = myparser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
String name=myparser.getName();
switch (event){
case XmlPullParser.START_TAG:
break;
case XmlPullParser.END_TAG:
if(name.equals("page")){
Log.e("TAG",""+ myparser.getAttributeValue(null,"id"));
Log.e("Page content ",""+ myparser.getAttributeValue(null,"text"));
}
break;
}
event = myparser.next();
}
} catch (Exception e) {
e.printStackTrace();
}