MIDPデバイスからServletにXMLデータを取得しようとしています。サーブレットは次のようにデータを取得しています -UTF文字列をInputStreamに変換する
DataInputStream dis = new DataInputStream((InputStream) request.getInputStream());
String readUTF = dis.readUTF();
これをMIDPから取得した後、私はそれが終わったと思いました。しかし、今はreadUTFをInputStreamに変換するのに問題があります。私はXML文字列を解析したい。私はkXML 2.3.0を使用して、ここのコードです -
XmlPullParser xpp = new KXmlParser();
try {
xpp.setInput(new InputStreamReader(new ByteArrayInputStream(readUTF.getBytes("UTF-8"))));
int event = xpp.getEventType();
if (event != xpp.END_DOCUMENT) {
System.out.println("Inside Document");
if (xpp.getName() != null) {
System.out.println("The tag is not null");
if (xpp.getName().equals("title")) {
System.out.println("Title =" + xpp.getText());
} else if (xpp.getName().equals("note")) {
System.out.println("Note =" + xpp.getText());
} else if (xpp.getName().equals("priority")) {
System.out.println("Priority =" + xpp.getText());
}
}
event = xpp.next();
}
}
私が午前問題がドキュメント内に今までに印刷されていることです。つまり、2番目のprint文は実行する機会を得られません。私はDom4jを同じものに使用しました。
SAXReader sr = new SAXReader();
sr.read(stringReader);
System.out.println(sr.getDocumentFactory().createDocument().asXML());
結果は何かである。このちょうどこのされる -
INFO: <?xml version="1.0" encoding="UTF-8"?>
オリジナル文字列がある - <?xml version='1.0' encoding='UTF-8' ?> <data> <task><title>dsfsdfds</title><note>null</note><priority>High</priority></task><task><title>sdfsdfdsf</title><note>null</note><priority>High</priority></task> </data>
私はそれのためにXMLを検証し、それが完璧に動作します。 UTF-8をInputStreamに変換する際に問題はありますか?そして私のXML Stringをデータにパースする別の方法があります。
あなたは「2番目のprint文は実行する機会がありません」と言っていますが、 'xpp.getName()' *が* nullであるかどうかを表示するために 'else'節を追加してください。 –
しかし、それはヌルが返ってくるので、そこにノードがないことを意味しますか? – Chan
これは、開始/終了要素ノード、またはエンティティ参照ではないことを意味します。それはTEXT、START_DOCUMENTなどである可能性があります。 –