소스 검색

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

Nicolas Cannasse 13 년 전
부모
커밋
e75b6ce9bf
1개의 변경된 파일9개의 추가작업 그리고 1개의 파일을 삭제
  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;