0
我正在使用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事件#1」。所以如果條件返回false。
我以爲兩者都使用不同的XMLEvent實現。所以我通過代碼檢查它,jar在兩種環境中都是相同的:jre1.8.0_73/lib/rt.jar!/javax/xml/stream/events/XMLEvent.class
如何獲取XMLEvent的整個文本目的?我在這裏做錯了什麼?請建議任何其他選擇。
Stax API中沒有指定toString應返回的內容。所以你不應該編碼。 Stax的實際實現取決於許多因素(系統環境,JSE和JEE中不同的JAR的類加載器排序,META-INF文件的存在...)。你可以閱讀它,但不要僅僅依靠同樣的罐子。您應該閱讀關於XMLEvent API的更多信息,按照教程進行操作,並不是針對您在此處做的事情做出的,例如從給定節點開始,並打印該節點的內容。這是可行的,但很複雜。 – GPI
@GPI如何讀取節點的內容? – Hello
@GPI爲什麼它在當地環境中工作?任何想法 – Hello