1212
1313import { ContentHandler } from "./ContentHandler" ;
1414import { FileReader } from "./FileReader" ;
15+ import { StringReader } from "./StringReader" ;
1516import { XMLAttribute } from "./XMLAttribute" ;
17+ import { XMLReader } from "./XMLReader" ;
1618import { XMLUtils } from "./XMLUtils" ;
1719
1820export class SAXParser {
1921
2022 contentHandler : ContentHandler ;
21- reader : FileReader ;
23+ reader : XMLReader ;
2224 pointer : number ;
2325 buffer : string ;
24- fileSize : number ;
25- encoding : BufferEncoding ;
2626 elementStack : number ;
2727 characterRun : string ;
2828 rootParsed : boolean ;
@@ -38,11 +38,26 @@ export class SAXParser {
3838 this . contentHandler = contentHandler ;
3939 }
4040
41- parse ( path : string , encoding ?: BufferEncoding ) : void {
42- this . encoding = encoding ? encoding : FileReader . detectEncoding ( path ) ;
41+ parseFile ( path : string , encoding ?: BufferEncoding ) : void {
42+ if ( ! this . contentHandler ) {
43+ throw new Error ( 'ContentHandler not set' ) ;
44+ }
45+ if ( ! encoding ) {
46+ encoding = FileReader . detectEncoding ( path ) ;
47+ }
4348 this . reader = new FileReader ( path , encoding ) ;
44- this . fileSize = this . reader . getFileSize ( ) ;
4549 this . buffer = this . reader . read ( ) ;
50+ this . contentHandler . initialize ( ) ;
51+ this . readDocument ( ) ;
52+ }
53+
54+ parseString ( string : string ) : void {
55+ if ( ! this . contentHandler ) {
56+ throw new Error ( 'ContentHandler not set' ) ;
57+ }
58+ this . reader = new StringReader ( string ) ;
59+ this . buffer = this . reader . read ( ) ;
60+ this . contentHandler . initialize ( ) ;
4661 this . readDocument ( ) ;
4762 }
4863
0 commit comments