2
2
// An xml parser for node.js
3
3
// (C) Rob Righter (@robrighter) 2009 - 2010, Licensed under the MIT-LICENSE
4
4
// Contributions from David Joham
5
-
6
5
7
- ( function ( ) {
6
+
7
+ ( function ( ) {
8
8
9
9
// CONSTANTS
10
10
var whitespace = "\n\r\t " ;
@@ -86,7 +86,7 @@ XMLP._errs[XMLP.ERR_ELM_NESTING = 17] = "Element: must be nested correctly";
86
86
87
87
88
88
XMLP . prototype . continueParsing = function ( strXML ) {
89
-
89
+
90
90
if ( this . m_chunkTransitionContinuation ) {
91
91
strXML = this . m_chunkTransitionContinuation + strXML ;
92
92
}
@@ -153,7 +153,7 @@ XMLP.prototype._checkStructure = function(iEvent) {
153
153
154
154
return iEvent ;
155
155
156
- }
156
+ }
157
157
158
158
XMLP . prototype . _clearAttributes = function ( ) {
159
159
this . m_atts = new Array ( ) ;
@@ -255,7 +255,7 @@ XMLP.prototype._parse = function() {
255
255
else {
256
256
return this . _parseText ( this . m_iP ) ;
257
257
}
258
-
258
+
259
259
260
260
}
261
261
@@ -297,15 +297,15 @@ XMLP.prototype._getContextualNamespace = function (prefix){
297
297
}
298
298
}
299
299
}
300
-
300
+
301
301
//no match was found for the prefix so pop off the first non-prefix namespace
302
302
for ( var i = ( this . m_namespaceList . length - 1 ) ; i >= 0 ; i -- ) {
303
303
var item = this . m_namespaceList [ i ] ;
304
304
if ( item . prefix === '' ) {
305
305
return item . uri ;
306
306
}
307
307
}
308
-
308
+
309
309
//still nothing, lets just return an empty string
310
310
return '' ;
311
311
}
@@ -318,9 +318,9 @@ XMLP.prototype._removeExpiredNamesapces = function (closingtagname) {
318
318
keeps . push ( item ) ;
319
319
}
320
320
} ) ;
321
-
321
+
322
322
this . m_namespaceList = keeps ;
323
-
323
+
324
324
}
325
325
326
326
////////////////////////////////////////////////////////////////////////
@@ -331,7 +331,7 @@ XMLP.prototype._parseAttribute = function(iB, iE) {
331
331
var cQuote , strN , strV ;
332
332
333
333
this . m_cAlt = "" ; //resets the value so we don't use an old one by accident (see testAttribute7 in the test suite)
334
-
334
+
335
335
iNB = SAXStrings . indexOfNonWhitespace ( this . m_xml , iB , iE ) ;
336
336
if ( ( iNB == - 1 ) || ( iNB >= iE ) ) {
337
337
return iNB ;
@@ -671,16 +671,16 @@ XMLP.prototype._replaceEntity = function(strD, iB, iE) {
671
671
case "apos" : strEnt = "'" ; break ;
672
672
case "quot" : strEnt = "\"" ; break ;
673
673
case "nbsp" :strEnt = '' ; break ;
674
- case "lt" :strEnt = '<' ; break ;
675
- case "gt" :strEnt = '>' ; break ;
676
- case "amp" :strEnt = '&' ; break ;
674
+ case "lt" :strEnt = '<' ; break ;
675
+ case "gt" :strEnt = '>' ; break ;
676
+ case "amp" :strEnt = '&' ; break ;
677
677
case "cent" :strEnt = "¢" ; break ;
678
678
case "pound" :strEnt = '£' ; break ;
679
679
case "yen" :strEnt = '¥' ; break ;
680
- case "euro" :strEnt = '€' ; break ;
681
- case "sect" :strEnt = '§' ; break ;
682
- case "copy" :strEnt = '©' ; break ;
683
- case "reg" :strEnt = '®' ; break ;
680
+ case "euro" :strEnt = '€' ; break ;
681
+ case "sect" :strEnt = '§' ; break ;
682
+ case "copy" :strEnt = '©' ; break ;
683
+ case "reg" :strEnt = '®' ; break ;
684
684
default :
685
685
if ( strD . charAt ( iB ) == "#" ) {
686
686
strEnt = String . fromCharCode ( parseInt ( strD . substring ( iB + 1 , iE ) ) ) ;
@@ -693,7 +693,7 @@ XMLP.prototype._replaceEntity = function(strD, iB, iE) {
693
693
this . _setContent ( XMLP . _CONT_ALT , strEnt ) ;
694
694
695
695
return XMLP . _ENTITY ;
696
- }
696
+ }
697
697
698
698
XMLP . prototype . _setContent = function ( iSrc ) {
699
699
var args = arguments ;
@@ -709,7 +709,7 @@ XMLP.prototype._setContent = function(iSrc) {
709
709
}
710
710
this . m_cSrc = iSrc ;
711
711
712
- }
712
+ }
713
713
714
714
XMLP . prototype . _setErr = function ( iErr ) {
715
715
var strErr = XMLP . _errs [ iErr ] ;
@@ -728,11 +728,11 @@ XMLP.prototype._setErr = function(iErr) {
728
728
//event-based interface for parsing. This is the object users interact with when coding
729
729
//with XML for <SCRIPT>
730
730
var SaxParser = function ( eventhandlerfactory ) {
731
-
731
+
732
732
var eventhandler = new function ( ) {
733
-
733
+
734
734
}
735
-
735
+
736
736
var thehandler = function ( ) { } ;
737
737
thehandler . prototype . onStartDocument = function ( funct ) {
738
738
eventhandler . onStartDocument = funct ;
@@ -758,12 +758,12 @@ var SaxParser = function(eventhandlerfactory) {
758
758
thehandler . prototype . onWarning = function ( funct ) {
759
759
eventhandler . onWarning = funct ;
760
760
}
761
-
761
+
762
762
thehandler . prototype . onError = function ( funct ) {
763
763
eventhandler . onError = funct ;
764
764
}
765
-
766
-
765
+
766
+
767
767
eventhandlerfactory ( new thehandler ( ) ) ;
768
768
//eventhandler = eventhandler(eventhandler);
769
769
this . m_hndDoc = eventhandler ;
@@ -809,11 +809,11 @@ SaxParser.prototype.parseString = function(strD) {
809
809
that . m_parser . continueParsing ( strD ) ;
810
810
startnew = true ;
811
811
}
812
-
812
+
813
813
//if(that.m_hndDoc && that.m_hndDoc.setDocumentLocator) {
814
814
// that.m_hndDoc.setDocumentLocator(that);
815
815
//}
816
-
816
+
817
817
that . m_bErr = false ;
818
818
819
819
if ( ! that . m_bErr && ! startnew ) {
@@ -906,8 +906,8 @@ SaxParser.prototype._fireError = function(strMsg) {
906
906
907
907
SaxParser . prototype . _fireEvent = function ( iEvt ) {
908
908
var hnd , func , args = arguments , iLen = args . length - 1 ;
909
-
910
-
909
+
910
+
911
911
if ( this . m_bErr ) return ;
912
912
913
913
if ( SaxParser . DOC_B == iEvt ) {
@@ -937,7 +937,7 @@ SaxParser.prototype._fireEvent = function(iEvt) {
937
937
else if ( SaxParser . CMNT == iEvt ) {
938
938
func = "onComment" ; hnd = this . m_hndLex ;
939
939
}
940
-
940
+
941
941
if ( hnd && hnd [ func ] ) {
942
942
if ( 0 == iLen ) {
943
943
hnd [ func ] ( ) ;
@@ -970,7 +970,7 @@ SaxParser.prototype._parseLoop = function(parser) {
970
970
parser = this . m_parser ;
971
971
while ( ! this . m_bErr ) {
972
972
iEvent = parser . next ( ) ;
973
-
973
+
974
974
if ( iEvent == XMLP . _ELM_B ) {
975
975
theatts = this . m_parser . m_atts ;
976
976
nameobject = parser . _parsePrefixAndElementName ( parser . getName ( ) ) ;
@@ -991,7 +991,7 @@ SaxParser.prototype._parseLoop = function(parser) {
991
991
theattsandnamespace = parser . _parseNamespacesAndAtts ( theatts ) ;
992
992
var theuri = parser . _getContextualNamespace ( nameobject . prefix ) ;
993
993
this . _fireEvent ( SaxParser . ELM_B , nameobject . name , theattsandnamespace [ 0 ] , ( nameobject . prefix === '' ) ? null : nameobject . prefix , ( theuri === '' ) ? null : theuri , theattsandnamespace [ 1 ] ) ;
994
-
994
+
995
995
parser . _removeExpiredNamesapces ( parser . getName ( ) ) ;
996
996
this . _fireEvent ( SaxParser . ELM_E , nameobject . name , ( nameobject . prefix === '' ) ? null : nameobject . prefix , ( theuri === '' ) ? null : theuri ) ;
997
997
//this._fireEvent(SaxParser.ELM_B, parser.getName(), this.m_parser.m_atts.map(function(item){return { name : item[0], value : item[1], };}) );
@@ -1028,7 +1028,7 @@ SaxParser.prototype._parseLoop = function(parser) {
1028
1028
}
1029
1029
}
1030
1030
1031
- }
1031
+ }
1032
1032
1033
1033
//SAXStrings: a useful object containing string manipulation functions
1034
1034
var SAXStrings = function ( ) {
@@ -1121,7 +1121,7 @@ SAXStrings.replace = function(strD, iB, iE, strF, strR) {
1121
1121
iB = iB || 0 ;
1122
1122
iE = iE || strD . length ;
1123
1123
1124
- return strD . substring ( iB , iE ) . split ( strF ) . join ( strR ) ;
1124
+ return strD . toString ( ) . substring ( iB , iE ) . split ( strF ) . join ( strR ) ;
1125
1125
1126
1126
}
1127
1127
0 commit comments