2016-02-06 100 views
2

我通過eclipse生成了axis2 web服務客戶端。axis2導致javax.xml.stream.XMLStreamException:元素文本內容可能不包含START_ELEMENT

我總是在執行時出現此錯誤。

org.apache.axis2.AxisFault: javax.xml.stream.XMLStreamException: element text content may not contain START_ELEMENT

在WSDL

<xsd:element name="transactionError" type="transactionError"/> 
<xsd:complexType name="transactionError"> 
<xsd:all> 
<xsd:element name="request_id" type="xsd:string"/> 
<xsd:element name="trans_id" nillable="true" type="string"/> 
<xsd:element name="date_time" nillable="true" type="string"/> 
<xsd:element name="error_code" nillable="true" type="int"/> 
<xsd:element name="error_text" nillable="true" type="string"/> 
</xsd:all> 
</xsd:complexType> 

和有關調試電話,我可以看到的響應

<n:transactionError xmlns:n="http://www.xxxx.com/wsdl/xxxxx.wsdl"> 
<transactionError> 
<request_id>Rxxxxxx</request_id> 
<date_time>2016-02-06 12:02:53</date_time> 
<error_code>-12</error_code> 
<error_text>xxxxxxxxxxxxxxxx</error_text> 
</transactionError></n:transactionError> 

java.lang.String content = reader.getElementText();

它拋出異常 javax.xml.stream.XMLStreamException: element text content may not contain START_ELEMENT

對讀者

具有以下屬性:

reader.currentNode = <transactionError><request_id>Rxxxxxx</request_id><date_time>2016-02-06 12:02:53</date_time><error_code>-12</error_code><error_text>xxxxxxxxx</error_text></transactionError>

reader.namespaceCount = -1

任何想法,可問題是什麼呢?

+0

''或''標籤裏面是否包含未轉義的'<'符號? (文本內容和屬性值中的<<必須轉義爲'<') – nvamelichev

+0

否值爲純文本Rxxxxxx,其中x爲數字,錯誤文本爲簡單文本 –

回答

4

對於包含純文本內容的元素,您只能調用XMLStreamReader.getElementText()方法。將這種方法稱爲<request_id>,<date_time>,<error_code><error_text>是可以的,因爲這些元素的子元素只是文本,但您不能在<transactionError>上使用此方法,因爲它具有其他元素作爲子元素。

XMLStreamReader.getElementText()的Javadoc包含詳細的僞代碼這顯示這個方法如何計算它返回和在什麼條件下會拋出一個XMLStreamExceptionString。如果當前元素有任何元素子元素,則此方法將引發異常。

如果Axis2生成了這段代碼,我會建議檢查他們是否已經在更新的版本中解決了這個問題,並在Apache中打開bug report針對他們的項目,如果它仍然是一個問題。

相關問題