Java SOAPMessage如何解析<;![CDATA[]]>;?
下面是将java对象封送到SOAPMessage中的代码:Java SOAPMessage如何解析<;![CDATA[]]>;?,java,soap,cdata,Java,Soap,Cdata,下面是将java对象封送到SOAPMessage中的代码: public static SOAPMessage encode(String key,Object object) throws JAXBException, SOAPException{ JAXBContext airContext = newInstance("com.test"); contextMap.put("ws", airContext); Marshaller marshal
public static SOAPMessage encode(String key,Object object) throws JAXBException, SOAPException{
JAXBContext airContext = newInstance("com.test");
contextMap.put("ws", airContext);
Marshaller marshaller = airContext .createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
marshaller.marshal(object, message.getSOAPBody());
message.saveChanges();
return message;
}
这个物体像:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
private String name;
private String surname;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
}
我想将其封送到此xml:
<root>
<name><![CDATA[test]]></name>
<surname>test</surname>
</root>
测试
但现在它显示为:
<root>
<name><![CDATA[test]]></name>
<surname>test</surname>
</root>
![CDATA[测试]]
测试
您能告诉我有什么问题吗?您不能直接解析CDATA中的xml,因为解析器将忽略添加为CDATA的全部目的。您可以如下所示获取CDATA元素中的数据,并对其进行解析
SOAPBody soapBody = soapMessage.getSOAPBody();
NodeList nodeList = soapBody.getElementsByTagName("outerElementOfCDATA");
Element element = (Element) nodeList.item(0);
Node child = element.getFirstChild();
String characterData;
if (child instanceof CharacterData) {
characterData = ((CharacterData) child).getData();
}
@Eranda,“outerenceofcdata”String
是标记吗?像
?还是别的什么?