我在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\">ABCD</ADDRESS></MYTAG2></MYTAG1></MYTAG>]]>"
当我尝试使用DOM解析器时。这个字符串给出了异常。
DocumentBuilder builder;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
Document outputXMLDocument = builder.parse(new InputSource(new StringReader(outputString)));
NodeList nodes = outputXMLDocument.getElementsByTagName("MYTAG");
我想解析此respone并检索NAME和ADDRESS TAG的值。请提供建议以获得最佳处理方法。
答案 0 :(得分:0)
解析器不会解析CDATA
内的数据。 CDATA内部的部分旨在提供无法在XML
中发送的数据。假设您在XML中有<
和&
,它们有其特殊含义。这些类型的内容放在CDATA
部分
以下代码段可以帮助您解析元素中的字符数据。
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 "";
}
如果只有CDATA可用,您可以使用从webservice获得的响应创建文档,然后执行解析。
希望它有所帮助!