Java SOAPMessage如何解析<;![CDATA[]]>;?

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

下面是将java对象封送到SOAPMessage中的代码:

     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>&lt;![CDATA[test]]&gt;</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
是标记吗?像
?还是别的什么?