您的位置:首页 > 移动开发 > Android开发

android中pull解析,读取xml中的实体类(通过xml发送实体类)

2015-04-20 16:42 337 查看
以下是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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: