Java 将CDATA字符串解析为来自webservice的响应
我从webservice调用的响应中得到了以下字符串CDATA格式Java 将CDATA字符串解析为来自webservice的响应,java,parsing,cdata,Java,Parsing,Cdata,我从webservice调用的响应中得到了以下字符串CDATA格式 String outputString = "<![CDATA[<MYTAG><MYTAG1 type=\"java.util.vector\"><MyTAG2 type=\"java.util.hashtable\"><NAME type=\"java.lang.string\">XYZ</NAME><ADDRESS type=\"java.lang
String outputString = "<![CDATA[<MYTAG><MYTAG1 type=\"java.util.vector\"><MyTAG2 type=\"java.util.hashtable\"><NAME type=\"java.lang.string\">XYZ</NAME><ADDRESS type=\"java.lang.string\">ABCD</ADDRESS></MYTAG2></MYTAG1></MYTAG>]]>"
我想解析这个响应并检索NAME和ADDRESS标记的值。请提供处理此问题的最佳方法。解析器不会解析CDATA中的数据。CDATA中的部分旨在包含无法以XML格式发送的数据。假设您有,请检查这个问题-可能会有帮助。该CDATA值必须作为封闭节点的文本值来自XML文件。当解析包含的XML时,您将有一个文本节点。启动另一个DocumentBuilder并向其提供从文本节点提取的字符串值。此时,它将不再是CDATA部分,因为CDATA仅在文档的序列化版本中存在,而不在DOM中。。我在CDATA之前没有任何节点。Ratiher它只有字符串,正如我提到的string outputString=XYZABCD]]>事实上它没有。返回的数据仍然包装在CDATA中
DocumentBuilder builder;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
Document outputXMLDocument = builder.parse(new InputSource(new StringReader(outputString)));
NodeList nodes = outputXMLDocument.getElementsByTagName("MYTAG");
public static String getCharacterDataFromElement(Element e) {
Node child = e.getFirstChild();
if (child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
System.out.println(cd.getData());
return cd.getData();
}
return "";
}