91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android中pull如何解析xml方式

發布時間:2021-01-28 10:08:16 來源:億速云 閱讀:175 作者:小新 欄目:編程語言

小編給大家分享一下android中pull如何解析xml方式 ,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

pull解析xml文件,和sax和dom一樣 都可以脫離android單獨使用,pull和sax的原理一樣,不一樣的地方是pull讀取xml文件后調用方法返回的是數字,
  讀取到xml的聲明返回數字0 START_DOCUMENT;
  讀取到xml的結束返回數字1 END_DOCUMENT ;
  讀取到xml的開始標簽返回數字2 START_TAG
  讀取到xml的結束標簽返回數字3 END_TAG
  讀取到xml的文本返回數字4 TEXT

  pull是開源的項目 源碼下載地址http://www.php.cn/

被解析的xml文檔和android dom 解析xml方式 中的xml文檔一樣,命名為pullTest.xml.

private String pullParseXml(InputStream inputStream) {
		String result = "";
		//解析全部的xml
		boolean isParse = true;
		try {
			// 創建一個xmlPullParser的工廠
			XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
			// 獲取一個解析實例
			XmlPullParser parse = factory.newPullParser();
			// 設置輸入流的編碼格式
			parse.setInput(inputStream, "UTF-8");
			// 當前事件的類型
			int eventType = parse.getEventType();
			while (XmlPullParser.END_DOCUMENT != eventType) {
				// 當前節點的名稱
				String nodeName = parse.getName();
				switch (eventType) {
				case XmlPullParser.START_TAG:
					if ("group".equals(nodeName)) {
						// 解析<group>節點中的屬性值,getAttributeCount()獲取屬性的個數
						for (int i = 0; i < parse.getAttributeCount(); i++) {
							// 屬性名稱
							String groupName = parse.getAttributeName(i);
							// 屬性名稱對應的值
							String nameValue = parse.getAttributeValue(i);
							result = result + groupName + " = " + nameValue;
						}
						result += "\n";
					} else if ("person".equals(nodeName)) {
						String personName = parse.getAttributeValue(0);
						String age = parse.getAttributeValue(1);
						result = result + "personName = " + personName
								+ "age =" + age + "\n";
					} else if ("chinese".equals(nodeName)) {
						//節點對應的文本
						String chinese = parse.nextText();
						Pattern p = Pattern.compile("\\s*|\t|\r|\n");
						Matcher m = p.matcher(chinese);
						chinese = m.replaceAll("");

						result = result + "chinese = " + chinese;
					} else if ("english".equals(nodeName)) {
						String english = parse.nextText();

						Pattern p = Pattern.compile("\\s*|\t|\r|\n");
						Matcher m = p.matcher(english);
						english = m.replaceAll("");

						result = result + "english = " + english + "\n";
					}
					break;
				case XmlPullParser.END_TAG:
					//在解析到一個group節點完成時,退出解析xml文件
//					if("group".equals(nodeName)){
//						eventType = XmlPullParser.END_DOCUMENT; 
//						isParse = false;
//					}
					break;
				default:
					break;
				}
				//整個xml文件全部解析
				if(isParse){
					eventType = parse.next();
				}
			}
		} catch (XmlPullParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return result;
	}

pull和sax不同最主要的體現在pull可以由客戶隨時終止解析xml.sax解析,只能從文檔頭一直讀到尾,中間不能停止也不能對文件進行修改。直到解析完了整個文檔才會返回。

//在解析到一個group節點完成時,退出解析xml文件
//					if("group".equals(nodeName)){
//						eventType = XmlPullParser.END_DOCUMENT; 
//						isParse = false;
//					}

只要滿足退出解析的條件,只需要設置如下代碼即可。

eventType = XmlPullParser.END_DOCUMENT;

pull解析方式用到的方法,大部分我都在代碼中注釋了。

以上是“android中pull如何解析xml方式 ”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柞水县| 孙吴县| 财经| 团风县| 中牟县| 邻水| 长沙市| 上虞市| 屏边| 石屏县| 周口市| 通辽市| 五家渠市| 石屏县| 托克托县| 大足县| 托克托县| 淮阳县| 饶平县| 洛浦县| 阿拉善右旗| 宜春市| 云浮市| 九龙坡区| 军事| 凤庆县| 乐亭县| 涿鹿县| 浑源县| 齐齐哈尔市| 恩施市| 尤溪县| 如东县| 临西县| 迭部县| 监利县| 康平县| 新竹市| 新蔡县| 报价| 遂昌县|