2009年1月8日木曜日

JavaFX PullParser (data.pull)

JavaFX で XML をパースしてみる

javafx.data.pull.PullParser は XML と JSON は最初からサポートされている

ここ がわかりやすかった

こんな XML をパースすると
More...
sandwich.xml














import java.io.FileInputStream;
import javafx.data.pull.Event;
import javafx.data.pull.PullParser;
import javafx.ext.swing.SwingList;
import javafx.ext.swing.SwingListItem;
import javafx.scene.Scene;
import javafx.stage.Stage;

var list = SwingList { width: 600 height: 300 }

var myparser = PullParser {
documentType: PullParser.XML;
onEvent: function (e: Event) {
var item = SwingListItem {
text: "event {e}"
};
insert item into list.items;
}
input: new FileInputStream("/tmp/sandwich.xml");
}
myparser.parse();

Stage {
title: "XML Sandwich"
scene: Scene { content: list }
}


e : Event の中身がリストになって出力される
結果は ここ

Event の要素は data.pull.Event に定義されている

variables
type : Integer current Event type
typeName : String current Event name
level : Integer depth of Node
qname : QName name of XML element
text : String XML text

variable of QName (javafx.data.xml.QName)
name : String
namespaces : String

functions
getAttributeValue(qname : QName) : String



type はこんな感じで使う
if(e.type == PullParser.START_ELEMENT){
...
}

variables of PullParser
START_DOCUMENT : Integer (=7)
END_DOCUMENT : Integer (=8)
START_ELEMENT : Integer (=1)
END_ELEMENT : Integer (=2)
TEXT : Integer (=4)


qname はこんな感じで使う
if(e.qname.name.equals("bread")){
...
}

xml が
<cheese type="chedar"/>
のようになっているとき、 getAttributeValue で type の値を得る

if(e.qname.name.equals("cheese")){
var cheesetype = e.getAttributeValue(QName{name:"type"});
// cheesetype = "chedar" になる
....
}

0 件のコメント:

コメントを投稿