@@ -331,16 +331,19 @@ var char = function(a) {
331331} ;
332332
333333var chars = {
334- nilChar : char ( 254 ) ,
335- missingChar : char ( 200 ) ,
336- nilPremitive : char ( 176 ) ,
337- missingPremitive : char ( 201 ) ,
338- emptyChar : char ( 177 ) ,
339- emptyValue : char ( 178 ) ,
340- boundryChar : char ( 186 ) ,
341- arrayEnd : char ( 197 ) ,
334+ nilChar : char ( 176 ) ,
335+ missingChar : char ( 201 ) ,
336+ nilPremitive : char ( 175 ) ,
337+ missingPremitive : char ( 200 ) ,
338+
339+ emptyChar : char ( 178 ) ,
340+ emptyValue : char ( 177 ) , //empty Premitive
341+
342+ boundryChar : char ( 179 ) ,
343+
342344 objStart : char ( 198 ) ,
343- arrStart : char ( 199 )
345+ arrStart : char ( 204 ) ,
346+ arrayEnd : char ( 185 ) ,
344347} ;
345348
346349var charsArr = [
@@ -350,6 +353,7 @@ var charsArr = [
350353 chars . missingPremitive ,
351354 chars . boundryChar ,
352355 chars . emptyChar ,
356+ chars . emptyValue ,
353357 chars . arrayEnd ,
354358 chars . objStart ,
355359 chars . arrStart
@@ -865,6 +869,7 @@ var util = require("./util");
865869var buildOptions = require ( "./util" ) . buildOptions ;
866870var xmlNode = require ( "./xmlNode" ) ;
867871var TagType = { "OPENING" : 1 , "CLOSING" : 2 , "SELF" : 3 , "CDATA" : 4 } ;
872+ var regx = "<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|(([\\w:\\-._]*:)?([\\w:\\-._]+))([^>]*)>|((\\/)(([\\w:\\-._]*:)?([\\w:\\-._]+))\\s*>))([^<]*)" ;
868873
869874//var tagsRegx = new RegExp("<(\\/?[\\w:\\-\._]+)([^>]*)>(\\s*"+cdataRegx+")*([^<]+)?","g");
870875//var tagsRegx = new RegExp("<(\\/?)((\\w*:)?([\\w:\\-\._]+))([^>]*)>([^<]*)("+cdataRegx+"([^<]*))*([^<]+)?","g");
@@ -885,14 +890,15 @@ var defaultOptions = {
885890 trimValues : true , //Trim string values of tag and attributes
886891 cdataTagName : false ,
887892 cdataPositionChar : "\\c" ,
893+ localeRange : "" ,
888894 tagValueProcessor : function ( a ) { return a } ,
889895 attrValueProcessor : function ( a ) { return a }
890896 //decodeStrict: false,
891897} ;
892898
893899exports . defaultOptions = defaultOptions ;
894900
895- var props = [ "attributeNamePrefix" , "attrNodeName" , "textNodeName" , "ignoreAttributes" , "ignoreNameSpace" , "allowBooleanAttributes" , "parseNodeValue" , "parseAttributeValue" , "arrayMode" , "trimValues" , "cdataTagName" , "cdataPositionChar" , "tagValueProcessor" , "attrValueProcessor" ] ;
901+ var props = [ "attributeNamePrefix" , "attrNodeName" , "textNodeName" , "ignoreAttributes" , "ignoreNameSpace" , "allowBooleanAttributes" , "parseNodeValue" , "parseAttributeValue" , "arrayMode" , "trimValues" , "cdataTagName" , "cdataPositionChar" , "localeRange" , " tagValueProcessor", "attrValueProcessor" ] ;
896902exports . props = props ;
897903
898904var getTraversalObj = function ( xmlData , options ) {
@@ -903,7 +909,8 @@ var getTraversalObj = function(xmlData, options) {
903909 var xmlObj = new xmlNode ( "!xml" ) ;
904910 var currentNode = xmlObj ;
905911
906- var tagsRegx = / < ( ( ! \[ C D A T A \[ ( [ \s \S ] * ?) ( ] ] > ) ) | ( ( [ \w : \- . _ ] * : ) ? ( [ \w : \- . _ ] + ) ) ( [ ^ > ] * ) > | ( ( \/ ) ( ( [ \w : \- . _ ] * : ) ? ( [ \w : \- . _ ] + ) ) \s * > ) ) ( [ ^ < ] * ) / g;
912+ regx = regx . replace ( / \[ \\ w / g, "[" + options . localeRange + "\\w" ) ;
913+ var tagsRegx = new RegExp ( regx , "g" ) ;
907914 var tag = tagsRegx . exec ( xmlData ) ;
908915 var nextTag = tagsRegx . exec ( xmlData ) ;
909916 while ( tag ) {
0 commit comments