私はStAX Iterator APIを使用してxmlを読み取ります。StAX XMLEventオブジェクトの全文を取得する方法は?
XML:
<FormData OID="QUAL">
<IGData IGRepeatKey="1" IGOID="SQUAL" TType="Insert">
<IData Value="0859" IOID="SID"></IData>
<IData Value="DM" IOID="RDOMAIN"></IData>
</IGData>
<IGData IGRepeatKey="1" IGOID="SQUAL" TType="Insert">
<IData Value="0860" IOID="SID"></IData>
<IData Value="2013-01-03T02:00" IOID="QVAL"></IData>
</IGData>
</FormData>
そしてスタックスコード:
while(xmlEventReader.hasNext()){
xmlEvent = xmlEventReader.nextEvent();
eventString = xmlEvent.toString();
if(xmlEvent.isStartElement() && eventString.contains("FormData") && eventString.contains("QUAL")){
//do something
}
}
それは私のローカル環境で(eventStringはのXMLEventのテキスト全体を持って)取り組んでいます。
しかし、これをサーバーにデプロイすると、eventStringには「Stax Event#1」のような内容が含まれます。したがって、条件がfalseを返す場合
私は両方とも異なるXMLEvent実装を使用していると思っていました。だからコードで確認したところ、jar1.8.0_73/lib/rt.jar!/javax/xml/stream/events/XMLEvent.class
XMLEventの全文を取得する方法オブジェクト?私はここで何か悪いことをしていますか?他の選択肢を提案してください。
toStringが返すべきものを指定するものはStax APIには何もありません。だからあなたはそれに対して決してコード化すべきではありません。 Staxの実際の実装は、多くの要素(システムenv、JSEおよびJEEで異なるJARのクラスローダの順序付け、META-INFファイルの存在など)に応じて実行時に選択されます。あなたはそれを読むことができますが、存在しているだけのジャーにはカウントしません。 XMLEvent APIの詳細については、チュートリアルに従ってください。ここで何をしているのかは分かりません。与えられたノードから開始し、そのノードの内容を印刷する。それは実行可能ですが、複雑です。 – GPI
@GPIどのようにノードの内容を読むことができますか? – Hello
@GPIなぜローカル環境で動作していますか?任意のアイデア – Hello