XmlPullParser:讀XML
※Chess.java
public class Chess {
private String chessName;
private Integer price;
// setter/getter...
}
※讀寫XML會用到的java bean
※XmlSerializer
public void btn(View view){
List<Chess> chs = new ArrayList<>();
String[] chessNames = {"象棋", "西洋棋", "五子棋"};
Integer[] prices = {55, 60, 65};
for (int i = 0; i < chessNames.length; i++) {
Chess ch = new Chess();
ch.setChessName(chessNames[i]);
ch.setPrice(prices[i]);
chs.add(ch);
}
System.out.println("寫檔");
XmlSerializer xml = Xml.newSerializer();
File f = new File(getApplicationContext().getFilesDir() + File.separator, "serializer.xml");
try (OutputStream out = new FileOutputStream(f)){
xml.setOutput(out, "UTF-8");
xml.startDocument("UTF-8", true);
xml.startTag(null, "map"); // null表示沒有namespace
for (Chess chess : chs) {
// chess node
xml.startTag(null, "chess");
xml.text(chess.getChessName());
xml.endTag(null, "chess");
// price node
xml.startTag(null, "price");
xml.text(chess.getPrice().toString());
xml.endTag(null, "price");
}
xml.endTag(null, "map");
xml.endDocument();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
※try有圓括號(java7)要在build.gradle(Module:app)這支檔案裡的
android->;defaultConfig->;minSdkVersion-->要在19(含)以上
※XmlPullParser
public void btn(View view){
XmlPullParser xml = Xml.newPullParser();
File f = new File(getApplicationContext().getFilesDir() + File.separator, "serializer.xml");
try (InputStream in = new FileInputStream(f)){
xml.setInput(in, "UTF-8");
int type = xml.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {
if(type == XmlPullParser.START_DOCUMENT) {
System.out.println("Start document");
} else if(type == XmlPullParser.START_TAG) {
System.out.println("Start tag " + xml.getName());
} else if(type == XmlPullParser.END_TAG) {
System.out.println("End tag " + xml.getName());
} else if(type == XmlPullParser.TEXT) {
System.out.println("Text " + xml.getText());
}
type = xml.next();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
※
沒有留言:
張貼留言