解析CDATA字符串作为来自webservice的响应

时间:2014-09-18 05:38:46

标签: 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\">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的值。请提供建议以获得最佳处理方法。

1 个答案:

答案 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获得的响应创建文档,然后执行解析。

希望它有所帮助!