Update of /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/cimxml
In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv28611/src/org/sblim/cimclient/internal/cimxml
Modified Files:
Tag: Experimental
CIMXMLParserImpl.java
Log Message:
2640 Multiple CDATA parsing broken in DOM parser
Index: CIMXMLParserImpl.java
===================================================================
RCS file: /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/cimxml/CIMXMLParserImpl.java,v
retrieving revision 1.14.2.42
retrieving revision 1.14.2.43
diff -u -d -r1.14.2.42 -r1.14.2.43
--- CIMXMLParserImpl.java 8 May 2013 17:02:50 -0000 1.14.2.42
+++ CIMXMLParserImpl.java 11 May 2013 21:43:22 -0000 1.14.2.43
@@ -59,6 +59,7 @@
* 3598613 2013-01-11 blaschke-oss different data type in cim instance and cim object path
* 2616 2013-02-23 blaschke-oss Add new API WBEMClientSBLIM.sendIndication()
* 2636 2013-05-08 blaschke-oss Nested embedded instances cause CIMXMLParseException
+ * 2640 2013-05-11 blaschke-oss Multiple CDATA parsing broken in DOM parser
*/
package org.sblim.cimclient.internal.cimxml;
@@ -184,16 +185,17 @@
String typeStr = attribute(pValueE, "TYPE");
CIMDataType type = typeStr == null ? null : parseScalarTypeStr(typeStr);
- Text t = (Text) pValueE.getFirstChild();
// ebak: empty VALUE element is parsed as empty String
- String valueStr;
- if (t != null) {
- String nodeValue = t.getNodeValue();
- valueStr = nodeValue == null ? "" : nodeValue;
- } else {
- valueStr = "";
+ NodeList list = pValueE.getChildNodes();
+ StringBuilder valueStr = new StringBuilder();
+ for (int i = 0; i < list.getLength(); i++) {
+ Text t = (Text) list.item(i);
+ if (t != null) {
+ String nodeValue = t.getNodeValue();
+ if (nodeValue != null) valueStr.append(nodeValue);
+ }
}
- return new TypedValue(type, valueStr);
+ return new TypedValue(type, valueStr.toString());
}
/**
|