@@ -142,23 +142,33 @@ public override XmlDocument EncodeDocument(IMessage source)
142142 /// <throws> EncodingNotSupportedException if the message encoded. </throws>
143143 /// <summary> is not supported by this parser.
144144 /// </summary>
145- public override IMessage ParseDocument ( XmlDocument xmlMessage , string version )
145+ public override IMessage ParseDocument ( XmlDocument xmlMessage , string version , ParserOptions parserOptions )
146146 {
147+ if ( parserOptions is null )
148+ {
149+ throw new ArgumentNullException ( nameof ( parserOptions ) ) ;
150+ }
151+
147152 var messageName = xmlMessage . DocumentElement . Name ;
148153 var message = InstantiateMessage ( messageName , version , true ) ;
149- Parse ( message , xmlMessage . DocumentElement ) ;
154+ Parse ( message , xmlMessage . DocumentElement , parserOptions ) ;
150155 return message ;
151156 }
152157
153158 /// <inheritdoc />
154159 public override void Parse ( IMessage message , string @string , ParserOptions parserOptions )
155160 {
161+ if ( parserOptions is null )
162+ {
163+ throw new ArgumentNullException ( nameof ( parserOptions ) ) ;
164+ }
165+
156166 try
157167 {
158168 var xmlDocument = new XmlDocument ( ) ;
159169 xmlDocument . Load ( new StringReader ( @string ) ) ;
160170
161- Parse ( message , xmlDocument . DocumentElement ) ;
171+ Parse ( message , xmlDocument . DocumentElement , parserOptions ) ;
162172 }
163173 catch ( XmlException e )
164174 {
@@ -201,7 +211,7 @@ protected internal static string MakeGroupElementName(string messageName, string
201211 /// <summary> Populates the given group object with data from the given group element, ignoring
202212 /// any unrecognized nodes.
203213 /// </summary>
204- private void Parse ( IGroup groupObject , XmlElement groupElement )
214+ private void Parse ( IGroup groupObject , XmlElement groupElement , ParserOptions parserOptions )
205215 {
206216 var childNames = groupObject . Names ;
207217 var messageName = groupObject . Message . GetStructureName ( ) ;
@@ -222,14 +232,14 @@ private void Parse(IGroup groupObject, XmlElement groupElement)
222232 for ( var i = 0 ; i < childNames . Length ; i ++ )
223233 {
224234 SupportClass . ICollectionSupport . Remove ( unparsedElementList , childNames [ i ] ) ;
225- ParseReps ( groupElement , groupObject , messageName , childNames [ i ] , childNames [ i ] ) ;
235+ ParseReps ( groupElement , groupObject , messageName , childNames [ i ] , childNames [ i ] , parserOptions ) ;
226236 }
227237
228238 for ( var i = 0 ; i < unparsedElementList . Count ; i ++ )
229239 {
230240 var segName = ( string ) unparsedElementList [ i ] ;
231241 var segIndexName = groupObject . AddNonstandardSegment ( segName ) ;
232- ParseReps ( groupElement , groupObject , messageName , segName , segIndexName ) ;
242+ ParseReps ( groupElement , groupObject , messageName , segName , segIndexName , parserOptions ) ;
233243 }
234244 }
235245
@@ -284,7 +294,8 @@ private void ParseReps(
284294 IGroup groupObject ,
285295 string messageName ,
286296 string childName ,
287- string childIndexName )
297+ string childIndexName ,
298+ ParserOptions parserOptions )
288299 {
289300 var reps = GetChildElementsByTagName ( groupElement , MakeGroupElementName ( messageName , childName ) ) ;
290301 Log . Debug ( "# of elements matching " + MakeGroupElementName ( messageName , childName ) + ": " + reps . Count ) ;
@@ -293,36 +304,36 @@ private void ParseReps(
293304 {
294305 for ( var i = 0 ; i < reps . Count ; i ++ )
295306 {
296- ParseRep ( ( XmlElement ) reps [ i ] , groupObject . GetStructure ( childIndexName , i ) ) ;
307+ ParseRep ( ( XmlElement ) reps [ i ] , groupObject . GetStructure ( childIndexName , i ) , parserOptions ) ;
297308 }
298309 }
299310 else
300311 {
301312 if ( reps . Count > 0 )
302313 {
303- ParseRep ( ( XmlElement ) reps [ 0 ] , groupObject . GetStructure ( childIndexName , 0 ) ) ;
314+ ParseRep ( ( XmlElement ) reps [ 0 ] , groupObject . GetStructure ( childIndexName , 0 ) , parserOptions ) ;
304315 }
305316
306317 if ( reps . Count > 1 )
307318 {
308319 var newIndexName = groupObject . AddNonstandardSegment ( childName ) ;
309320 for ( var i = 1 ; i < reps . Count ; i ++ )
310321 {
311- ParseRep ( ( XmlElement ) reps [ i ] , groupObject . GetStructure ( newIndexName , i - 1 ) ) ;
322+ ParseRep ( ( XmlElement ) reps [ i ] , groupObject . GetStructure ( newIndexName , i - 1 ) , parserOptions ) ;
312323 }
313324 }
314325 }
315326 }
316327
317- private void ParseRep ( XmlElement theElem , IStructure theObj )
328+ private void ParseRep ( XmlElement theElem , IStructure theObj , ParserOptions parserOptions )
318329 {
319330 if ( theObj is IGroup )
320331 {
321- Parse ( ( IGroup ) theObj , theElem ) ;
332+ Parse ( ( IGroup ) theObj , theElem , parserOptions ) ;
322333 }
323334 else if ( theObj is ISegment )
324335 {
325- Parse ( ( ISegment ) theObj , theElem ) ;
336+ Parse ( ( ISegment ) theObj , theElem , parserOptions ) ;
326337 }
327338
328339 Log . Debug ( "Parsed element: " + theElem . Name ) ;
0 commit comments