資料解析之XML

2021-08-03 13:55:49 字數 3295 閱讀 3632

<?xml version="1.0" encoding="utf-8" ?>

張三23

1994-01-01

藍翔理髮

挖掘機false

大眾 小紅

201996-01-01

清華理髮

化妝true

實現步驟:

1.獲取xmlpullparse***ctory例項

xmlpullparse***ctory factory = xmlpullparse***ctory.newinstance();
2.借助xmlpullparse***ctory例項得到xmlpullparser物件,傳入xml資料
xmlpullparser xmlpullparser = factory.newpullparser();

//呼叫xmlpullparser的setinput()方法傳入xml資料

xmlpullparser.setinput(new stringreader(xmldata));

3.通過geteventtype()獲得當前解析事件,在while迴圈中不斷解析,直到解析事件為xmlpullparser.end_document,解析結束
int eventtype = xmlpullparser.geteventtype();

while (eventtype != xmlpullparser.end_document)

方法設計
/**

* 使用pull的方式解析

* * @param xmldata xml資料

*/public static void par***mlwithpull(string xmldata) else if ("age".equals(nodename)) else if ("birthday".equals(nodename)) else if ("school".equals(nodename)) else if ("major".equals(nodename)) else if ("married".equals(nodename)) else if ("car".equals(nodename))

} catch (ioexception e)

break;

}case xmlpullparser.end_tag:

break;

}default:

break;

}try catch (ioexception e)

}} catch (xmlpullparserexception e)

}

解析步驟

1.建立saxparse***ctory物件

saxparse***ctory factory = saxparse***ctory.newinstance();
2.通過saxparse***ctory物件獲取xmlreader
xmlreader xmlreader = factory.newsaxparser().getxmlreader();
3.將自定義的contenthandler例項設定到xmlreader中,呼叫parse()方法,傳入xml資料開始解析
contenthandler handler = new contenthandler();

//將contenthandler物件設定到xmlreader中

xmlreader.setcontenthandler(handler);

//開始執行解析

xmlreader.parse(new inputsource(new stringreader(xmldata)));

/** * 使用sax的方式解析xml

* * @param xmldata

*/public static void par***mlwithsax(string xmldata) catch (saxexception e) catch (parserconfigurationexception e) catch (ioexception e)

}/**

* sax解析輔助類

*/private static class contenthandler extends defaulthandler

/*** 開始解析某個節點時呼叫

** @param uri

* @param localname

* @param qname

* @param attributes

* @throws saxexception

*/@override

public void startelement(string uri, string localname, string qname, attributes attributes) throws saxexception

/*** 獲取節點的內容時呼叫

** @param ch

* @param start

* @param length

* @throws saxexception

*/@override

public void characters(char ch, int start, int length) throws saxexception else if ("age".equals(nodename)) else if ("birthday".equals(nodename)) else if ("school".equals(nodename)) else if ("major".equals(nodename)) else if ("married".equals(nodename)) else if ("car".equals(nodename))

}/**

* 完成解析某個節點時呼叫

** @param uri

* @param localname

* @param qname

* @throws saxexception

*/@override

public void endelement(string uri, string localname, string qname) throws saxexception

}/**

* 完成整個xml解析時呼叫

** @throws saxexception

*/@override

public void enddocument() throws saxexception

}

iOS之資料解析之XML解析

xml解析常見的兩種方式 dom解析和sax解析 dom解析 解析 如下 void xmldommethed nslog self sourcearray 寫入 如下 通過dom解析方式為xml增加節點 sax只可以讀取,不可以新增 void domaddnote sax解析 遵循協議 inte c...

iOS 網路資料之XML解析

向伺服器請求資料,那麼資料必須以某個特定的格式存放,然後一方把資料按這種格式組織起來,另一方按相同的方式把資料解析數來,就像是我們人之間講話交流,我們的話會轉變成振動 在空氣中傳播 然後對方的耳朵感受這種振動,然後把振動轉化為話,所以我認為格式的組織是為了更好的傳遞資料。一般網路資料會封裝成兩種格式...

XML解析之SAX解析

sax解析 核心類 saxparse ctory saxparser defaulthandler 步驟 建立工廠類例項 saxparse ctory factory saxparse ctory.newinstance 獲取解析器類例項 saxparser parser factory.newsa...