Browse Source

handle <spaces>[CDATA]<spaces> (fixed issue #717)

Nicolas Cannasse 13 years ago
parent
commit
e75b6ce9bf
1 changed files with 9 additions and 1 deletions
  1. 9 1
      std/haxe/xml/Fast.hx

+ 9 - 1
std/haxe/xml/Fast.hx

@@ -142,8 +142,16 @@ class Fast {
 		if( !it.hasNext() )
 			throw name+" does not have data";
 		var v = it.next();
-		if( it.hasNext() )
+		var n = it.next();
+		if( n != null ) {
+			// handle <spaces>CDATA<spaces>
+			if( v.nodeType == Xml.PCData && n.nodeType == Xml.CData && StringTools.trim(v.nodeValue) == "" ) {
+				var n2 = it.next();
+				if( n2 == null || (n2.nodeType == Xml.PCData && StringTools.trim(n2.nodeValue) == "" && it.next() == null) )
+					return n.nodeValue;
+			}
 			throw name+" does not only have data";
+		}
 		if( v.nodeType != Xml.PCData && v.nodeType != Xml.CData )
 			throw name+" does not have data";
 		return v.nodeValue;