@@ -61,6 +61,9 @@ public abstract class XMLParser : ParserBase
6161
6262 private static readonly Regex NameSpaceRegex = new Regex ( @$ "xmlns(.*)=""{ NameSpace } """, RegexOptions.Compiled);
6363
64+ /// <summary> includeLongNameInEncodedXML.</summary>
65+ public bool includeLongNameInEncodedXML = false;
66+
6467 protected XMLParser()
6568 {
6669 }
@@ -371,6 +374,11 @@ public virtual bool Encode(ISegment segmentObject, XmlElement segmentElement, Pa
371374 continue ;
372375 }
373376
377+ if ( includeLongNameInEncodedXML && reps [ j ] is AbstractType rep )
378+ {
379+ newNode . SetAttribute ( "LongName" , rep . Description ) ;
380+ }
381+
374382 try
375383 {
376384 segmentElement . AppendChild ( newNode ) ;
@@ -731,17 +739,17 @@ private bool Encode(IType datatypeObject, XmlElement datatypeElement, ParserOpti
731739 var hasData = false ;
732740
733741 // TODO: consider using a switch statement
734- if ( datatypeObject is Varies )
742+ if ( datatypeObject is Varies varies )
735743 {
736- hasData = EncodeVaries ( ( Varies ) datatypeObject , datatypeElement , parserOptions ) ;
744+ hasData = EncodeVaries ( varies , datatypeElement , parserOptions ) ;
737745 }
738- else if ( datatypeObject is IPrimitive )
746+ else if ( datatypeObject is IPrimitive primitive )
739747 {
740- hasData = EncodePrimitive ( ( IPrimitive ) datatypeObject , datatypeElement ) ;
748+ hasData = EncodePrimitive ( primitive , datatypeElement ) ;
741749 }
742- else if ( datatypeObject is IComposite )
750+ else if ( datatypeObject is IComposite composite )
743751 {
744- hasData = EncodeComposite ( ( IComposite ) datatypeObject , datatypeElement , parserOptions ) ;
752+ hasData = EncodeComposite ( composite , datatypeElement , parserOptions ) ;
745753 }
746754
747755 return hasData ;
@@ -859,20 +867,28 @@ private bool EncodeComposite(IComposite datatypeObject, XmlElement datatypeEleme
859867 {
860868 var name = MakeElementName ( datatypeObject , i + 1 ) ;
861869 var newNode = datatypeElement . OwnerDocument . CreateElement ( name , NameSpace ) ;
870+
862871 var componentHasValue = Encode ( components [ i ] , newNode , parserOptions ) ;
863- if ( componentHasValue )
872+ if ( ! componentHasValue )
864873 {
865- try
866- {
867- datatypeElement . AppendChild ( newNode ) ;
868- }
869- catch ( Exception e )
870- {
871- throw new DataTypeException ( "DOMException encoding Composite: " , e ) ;
872- }
874+ continue ;
875+ }
873876
874- hasValue = true ;
877+ if ( includeLongNameInEncodedXML && components [ i ] is AbstractType component )
878+ {
879+ newNode . SetAttribute ( "LongName" , component . Description ) ;
880+ }
881+
882+ try
883+ {
884+ datatypeElement . AppendChild ( newNode ) ;
875885 }
886+ catch ( Exception e )
887+ {
888+ throw new DataTypeException ( "DOMException encoding Composite: " , e ) ;
889+ }
890+
891+ hasValue = true ;
876892 }
877893
878894 return hasValue ;
0 commit comments