Skip to content

Commit 5626db3

Browse files
laxmi-lal-menariamilkshakeuk
authored andcommitted
Update XMLParser.cs
Added a property which include the Long Name in Encoded XML
1 parent d120fec commit 5626db3

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

src/NHapi.Base/Parser/XMLParser.cs

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)