Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将CDATA字符串解析为来自webservice的响应_Java_Parsing_Cdata - Fatal编程技术网

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

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

我从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>]]>"

我想解析这个响应并检索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 "";
}