java - axis2 导致 javax.xml.stream.XMLStreamException : element text content may not contain START_ELEMENT

标签 java xml axis2

我通过 eclipse 生成了一个 axis2 web 服务客户端。

我总是在执行时遇到这个错误。

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

知道问题出在哪里吗?

最佳答案

您只能调用 XMLStreamReader.getElementText()包含纯文本内容的元素上的方法。可以为 <request_id> 调用此方法, <date_time> , <error_code><error_text>因为这些元素的子元素只是文本,但您不能在 <transactionError> 上使用此方法因为它有其他元素作为 child 。

XMLStreamReader.getElementText() 的 Javadoc包含详细的伪代码,显示该方法如何计算 String它返回以及在什么条件下它会抛出 XMLStreamException .如果当前元素有任何子元素,此方法将抛出异常。

如果 Axis2 生成此代码,我会建议检查他们是否已在更新的版本中修复此问题并打开 bug report如果它仍然是一个问题,反对他们在 Apache 中的项目。

关于java - axis2 导致 javax.xml.stream.XMLStreamException : element text content may not contain START_ELEMENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35239827/

相关文章:

wsdl - 生成wsdl时出现Axis2错误

java - 使用 Axis2 创建 Web 服务的步骤 - 客户端代码

java - JDK8调用方法时出现com.sun.jdi.InvocationException

java - 如何膨胀子布局

python - 使用 python lxml 解析部分 XML

java - ListView 滚动不起作用

spring - Axis2(aar) + spring,没有 servletContext

java - java中线程的使用方法

java - 从 Api 加载图像并缓存它

java - 如何加快列表比较/字符串替换?