以下是android代码
private List<TestEntity> showXml() {
List<TestEntity> testEntity = null;
TestEntity mTestEntity = null;
// ========创建XmlPullParser,有两种方式=======
// 方式一:使用工厂类XmlPullParserFactory
try {
XmlPullParserFactory pullFactory = XmlPullParserFactory
.newInstance();
XmlPullParser parser = pullFactory.newPullParser();
// 方式二:使用Android提供的实用工具类android.util.Xml
// XmlPullParser parser = Xml.newPullParser();
InputStream inStream = getAssets().open("test.txt");
// 解析文件输入流
parser.setInput(inStream, "GBK");
// 产生第一个事件
int eventType = parser.getEventType();
// 只要不是文档结束事件,就一直循环
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
// 触发开始文档事件
case XmlPullParser.START_DOCUMENT:
testEntity = new ArrayList<TestEntity>();
break;
// 触发开始元素事件
case XmlPullParser.START_TAG:
// 获取解析器当前指向的元素的名称
String name = parser.getName();
if ("a".equals(name)) {
// 通过解析器获取id的元素值
mTestEntity = new TestEntity();
}
if (mTestEntity != null) {
if ("content".equals(name)) {
// 获取解析器当前指向元素的下一个文本节点的值
mTestEntity.setContent(parser.nextText());
}
if ("id".equals(name)) {
// 获取解析器当前指向元素的下一个文本节点的值
mTestEntity.setId(parser.nextText());
}
if ("yesId".equals(name)) {
// 获取解析器当前指向元素的下一个文本节点的值
mTestEntity.setYesId(parser.nextText());
}
if ("type".equals(name)) {
// 获取解析器当前指向元素的下一个文本节点的值
mTestEntity.setType(parser.nextText());
}
if ("part".equals(name)) {
// 获取解析器当前指向元素的下一个文本节点的值
mTestEntity.setPart(parser.nextText());
}
if ("noId".equals(name)) {
// 获取解析器当前指向元素的下一个文本节点的值
mTestEntity.setNoId(parser.nextText());
}
}
break;
// 触发结束元素事件
case XmlPullParser.END_TAG:
//
if ("a".equals(parser.getName())) {
testEntity.add(mTestEntity);
mTestEntity = null;
}
break;
default:
break;
}
eventType = parser.next();
}
return testEntity;
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
以下是xml
<iq>
<a>
<content>有女朋友吗?</content>
<id>1</id>
<yesId>2</yesId>
<type>1</type>
<part>头</part>
<noId>3</noId>
</a>
<a>
<content>结婚了吗?</content>
<id>2</id>
<yesId>4</yesId>
<type>2</type>
<part>头</part>
<noId>5</noId>
</a>
<a>
<content>相亲了吗?</content>
<id>3</id>
<yesId>ks1000</yesId>
<type>3</type>
<part>头</part>
<noId>ks2000</noId>
</a>
<a>
<content>有孩子了吗?</content>
<id>4</id>
<yesId>ks3000</yesId>
<type>3</type>
<part>头</part>
<noId>ks4000</noId>
</a>
<a>
<content>怎么不结婚啊?</content>
<id>5</id>
<yesId>ks5000</yesId>
<type>3</type>
<part>头</part>
<noId>ks6000</noId>
</a>
<a>
<content>炼俯卧撑没?</content>
<id>6</id>
<yesId>ks7000</yesId>
<type>1</type>
<part>胸</part>
<noId>1</noId>
</a>
</iq>