XML pull-parserを使用してください。 XML文書は、論理パーツ、パーツごとのパーツ(イベント)です。したがって、各CARDINFO要素のために、あなたは新しいCardIntoオブジェクトを作成し、要素名「種類」のあなたはCARDINFOタイプを設定し、要素名「ID」のためにあなたがCARDINFOタイプを設定など
が読ん追加、更新、およびオブジェクトへのメソッドの書き込み、またはXMLからの読み取り/書き込み用のスタンドアロンクラスの作成:
この例はStAX API用です差異名がある)。
private void readHeaders(XMLStreamReader reader) throws XMLStreamException {
int level = 1;
int event;
do {
event = reader.next();
if(event == XMLStreamConstants.START_ELEMENT) {
level++;
String localName = reader.getLocalName();
if(localName.equals("Header")) {
CodeRequestHeader header = new CodeRequestHeader();
header.setName(reader.getAttributeValue(null, "name"));
header.setValue(reader.getAttributeValue(null, "value"));
headers.add(header);
}
} else if(event == XMLStreamConstants.END_ELEMENT) {
level--;
}
} while(level > 0);
}
は今このようなものを行うための複数の方法があるコードを使用して
<Headers>
<Header name="" value=""/>
<Header name="" value=""/>
<Header name="" value=""/>
</Headers>
、しかし重要:
public void read(XMLStreamReader reader) throws XMLStreamException {
int event;
// read to the first tag, so we are at level 1
do {
event = reader.next();
if(event == XMLStreamConstants.START_ELEMENT) {
break;
}
} while(reader.hasNext());
int level = 1;
do {
event = reader.next();
if(event == XMLStreamConstants.START_ELEMENT) {
level++; // increment
String localName = reader.getLocalName();
if(localName.equals("Domain")) {
event = reader.next();
if(event == XMLStreamConstants.CHARACTERS) {
domain = reader.getText();
}
} else if(localName.equals("URL")) {
event = reader.next();
if(event == XMLStreamConstants.CHARACTERS) {
url = reader.getText();
}
} else if(localName.equals("Headers")) {
readHeaders(reader);
level--;
} else throw new IllegalArgumentException("Unexpected element " + localName + " at " + reader.getLocation());
}
if(event == XMLStreamConstants.END_ELEMENT) {
level--; // decrement
}
} while(level > 0); // simple level check
}
解析サブタイプと呼ばれるヘッダ:
MyObjectには
ものは次のとおりです:
- 最初にレベル1に進みます。 1
- 開始および終了要素にインクリメントとデクリメントレベルレベルが
- 使用whileループを制御するためのレベル正しいように、レベル限り継続ルート要素
- スタートレベルでDO-whileループを読み取ります> 0
- サブ要素の場合(つまり、オブジェクトエンティティにマップされた複数のタグが含まれているタグがある場合)、手順2〜4を繰り返す新しいメソッドを作成します。メソッドが使用されている場合、レベルを1つ減らします。
このパターンを使用すると、n次元のXML文書を規則正しく厳密な適切な方法でプル・パースできます。厳密に言えば、ルールはreadHeadersメソッドの 'readHeader'メソッドでなければならないことを意味しますが、Headerエレメントにサブエレメントがない場合は不要です。お楽しみください;)
これはすごいです - 非常にポインタのおかげで! :D – Chris
私はストリームを取得することができ、アイテムを取得するためにXMLプルパーサーを使用しました。これをsystemoutに出力しました。オブジェクトを作成して保存するにはどうすればよいでしょうか? – Chris
se更新された返信 – ThomasRS