Androidデータストレージとアクセスのためのpull解析器の使用
Pull解析器はオープンソースjavaプロジェクトで、androidにもJavaEEにも使用できます.JavaEEでjarファイルをクラスパスに入れる必要がある場合は、AndroidがPull解析器に統合されているため、jarファイルを追加する必要はありません.Androidシステム自体で使用される各種xmlファイルは,その内部もPull解析器で解析される.Pull解析器の動作はSAX解析器と似ています.開始要素と終了要素イベント、parserを使用するなど、類似のイベントを提供します.next()は、次の要素に入り、対応するイベントをトリガーできます.SAXとは異なり,Pull解析器で発生したイベントはメソッドではなく数値であるため,興味のあるイベントをswitchで処理することができる.要素が解析を開始するとparserが呼び出される.nextText()メソッドは、次のTextタイプノードの値を取得することができる.
解析するXMLファイルのファイル名は次のとおりです:persons.xml
例は、上で解析したxmlコンテンツを格納するためにjavabeanを定義し、このjavabeanはPersonであり、以下のようにする.
Pull解析器を使用してitcastを読み込む.xmlのコードは次のとおりです.
Pull解析器を使用したXMLファイルの生成
いくつかの場合、XMLファイルを生成する必要があります.XMLファイルを生成する方法はたくさんあります.例えば、StringBuilderグループを使用してXMLコンテンツをスペルし、ファイルにコンテンツを書き込むことができます.DOM APIを使用してXMLファイルを生成したり、pull解析器を使用してXMLファイルを生成したりすることもできますが、ここではPull解析器を使用することをお勧めします.
Pull解析器を使用してpersonsを生成します.xml
次のようにコードを使用します(XMLファイルを生成します).
File xmlFile = new File("persons.xml");
FileOutputStream outStream = new FileOutputStream(xmlFile);
OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "UTF-8");
BufferedWriter writer = new BufferedWriter(outStreamWriter);
writeXML(persons, writer);
writer.flush();
writer.close();
生成されたxml文字列の内容のみを取得する場合は、StringWriterを使用します.
StringWriter writer = new StringWriter();
writeXML(persons, writer);
String content = writer.toString();
解析するXMLファイルのファイル名は次のとおりです:persons.xml
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id=“18">
<name>allen</name>
<age>36</age>
</person>
<person id=“28">
<name>james</name>
<age>25</age>
</person>
</persons>
例は、上で解析したxmlコンテンツを格納するためにjavabeanを定義し、このjavabeanはPersonであり、以下のようにする.
public class Person {
private Integer id;
private String name;
private Short age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getAge() {
return age;
}
public void setAge(Short age) {
this.age = age;
}
}
Pull解析器を使用してitcastを読み込む.xmlのコードは次のとおりです.
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
import cn.itcast.xml.domain.Person;
public class PullXMLReader {
public static List<Person> readXML(InputStream inStream) {
XmlPullParser parser = Xml.newPullParser();
try {
parser.setInput(inStream, "UTF-8");
int eventType = parser.getEventType();
Person currentPerson = null;
List<Person> persons = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:// ,
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG://
String name = parser.getName();
if (name.equalsIgnoreCase("person")) {
currentPerson = new Person();
currentPerson.setId(new Integer(parser.getAttributeValue(null, "id")));
} else if (currentPerson != null) {
if (name.equalsIgnoreCase("name")) {
currentPerson.setName(parser.nextText());// Text ,
} else if (name.equalsIgnoreCase("age")) {
currentPerson.setAge(new Short(parser.nextText()));
}
}
break;
case XmlPullParser.END_TAG://
if (parser.getName().equalsIgnoreCase("person") && currentPerson != null) {
persons.add(currentPerson);
currentPerson = null;
}
break;
}
eventType = parser.next();
}
inStream.close();
return persons;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
Pull解析器を使用したXMLファイルの生成
いくつかの場合、XMLファイルを生成する必要があります.XMLファイルを生成する方法はたくさんあります.例えば、StringBuilderグループを使用してXMLコンテンツをスペルし、ファイルにコンテンツを書き込むことができます.DOM APIを使用してXMLファイルを生成したり、pull解析器を使用してXMLファイルを生成したりすることもできますが、ここではPull解析器を使用することをお勧めします.
Pull解析器を使用してpersonsを生成します.xml
次のようにコードを使用します(XMLファイルを生成します).
File xmlFile = new File("persons.xml");
FileOutputStream outStream = new FileOutputStream(xmlFile);
OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "UTF-8");
BufferedWriter writer = new BufferedWriter(outStreamWriter);
writeXML(persons, writer);
writer.flush();
writer.close();
生成されたxml文字列の内容のみを取得する場合は、StringWriterを使用します.
StringWriter writer = new StringWriter();
writeXML(persons, writer);
String content = writer.toString();