我的网络服务正在从第三方接收xml,如下所示:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<Foo>bar</Foo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我的jaxws web服务因解析错误而拒绝此操作。此外,如果我尝试使用soapui验证此xml,则表示仅具有元素内容类型的Body不能包含文本元素。
我的问题是,xml有效吗?或者客户端是否应该向我发送一些内容而无需转义&lt;和&gt;。
欢迎任何对xml标准或规则的引用。
答案 0 :(得分:2)
嗯,这肯定是有效的XML。但是,你的问题似乎是它是否符合SOAP协议,这是一个更具限制性的问题。
在示例中,您的SOAP主体只是一个文本元素。我不是SOAP专家,但在我看到的所有SOAP示例中,正文中都有元素节点,而不仅仅是文本。 SOAP推荐(http://www.w3.org/TR/2000/NOTE-SOAP-20000508)也说
“身体入口由其识别 完全限定的元素名称“
确实表明要求元素而不是文本。
答案 1 :(得分:1)
或者,您可以通过将其与CDATA(字符数据)部分一起包含来转义完整字符串。 CDATA部分以九个字符的分隔符开头![CDATA [并以分隔符结束]]:
<![CDATA["Me, Myself & <I>"]]>
看看http://xmmssc-www.star.le.ac.uk/SAS/xmmsas_20070308_1802/doc/param/node24.html