XML的解析中的三種方法

2021-07-15 15:25:59 字數 1745 閱讀 7271

文章的出處為:

在android中提供了三種解析xml的方式:sax(******api xml),dom(document objrectmodel),以及android推薦的pull解析方式.下面就對三種解析方式一一詳細闡述。

假設要要解析person.xml文件

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

zhangsan

21lisi

22wangwu

222

首先介紹sax解析,

sax是事件驅動型xml解析的乙個標準介面不會改變sax的工作原理簡單地說就是對文件進行順序掃瞄,當掃瞄到文件(document)開始與結束、元素(element)開始與結束、文件(document)結束等地方時通知事件處理函式,由事件處理函式做相應動作,然後繼續同樣的掃瞄,直至文件結束。下面結合**分析

public classsaxpersonservice

public final class personpaser extendsdefaulthandler

privatelistpersons=null;

private stringtagname=null;

private personperson=null;

//遇到元素節點開始時候的處理方法

public void startelement(stringuri, string localname, string qname,

attributesattributes) throws saxexception  }

//遇到文字節點時的操作

public voidcharacters(char ch, int start, int length)

throwssaxexception elseif("age".equals(tagname))}

}//遇到元素節點結束時候的操作

public void endelement(stringuri, string localname, string qname)

throwssaxexception

tagname=null;//置空已有標記,因為要解析下乙個節點了}}

至此,sax解析完畢!

下面介紹dom解析,dom,即物件文件模型,它是將整個xml文件載入記憶體(所以效率較低,不推薦使用),每乙個節點當做乙個物件,結合**分析

public class dompersonservice else  if("age".equals(childelement.getnodename()))

}       }

persons.add(person);//遍歷完person下的所有子節點後將person元素加入到集合中去

}return persons;

}

至此,dom解析方式結束!

下面介紹pull解析

public class pulpersonservice

if(person != null)

break;

case(xmlpullparser.end_tag)://如果遇到標籤結束

if("person".equals(parser.getname()))

break;

}eventtype=parser.next();//進入下乙個事件處理

}return persons;

}

至此,三種解析方式已經闡述完畢!

xml 解析的三種方法

dom解析 public class dompersonservice public static listreadxml inputstream instream throws exception listpersons new arraylist 例項化乙個文件構建器工廠 documentbui...

xml的三種解析方法

xml主要有三種解析方式分別為dom sax 還有xmlpull,先來說下各自的優缺點。1 dom解析的特點是將整個xml文件以樹形結構放入到記憶體中,是官方推薦標準,優點是在記憶體中可以增刪改查,缺點是當檔案過大是可能會記憶體溢位。2 sax解析是一行一行的進行解析,是程式設計師社群開發出來的,優...

Android 三種XML檔案解析方法

xml檔案 代表資料 有結構描述 1 dom解析 public listloadpersons catch exception e return list sax解析 public listloadpersons override public void endelement string uri,...