Symptoms
I received the error below when trying to save a copy of a form.
'CDATA' is an invalid XmlNodeType. Line 1, position 199.
Type: System.Xml.XmlException
Source: System.Xml
Method Base
Member Type: Method
Name: ReadEndElement
Module
Scope Name: System.Xml.dll
Declaring Type
Full Name: System.Xml.XmlReader
Stack Trace:
at System.Xml.XmlReader.ReadEndElement()
at SourceCode.Forms.Authoring.Filters.Expression.FromXml(XmlReader reader)
at SourceCode.Forms.Authoring.Filters.OperatorExpression.ReadXml(XmlReader reader)
at SourceCode.Forms.Authoring.Filters.Expression.FromXml(XmlReader reader)
at SourceCode.Forms.Authoring.Filters.Filter.ReadXml(XmlReader reader)
at SourceCode.Forms.Authoring.Filters.Filter.FromXml(XmlReader reader)
at SourceCode.Forms.Authoring.Filters.Filter.FromXml(String xml)
at SourceCode.Forms.Authoring.Property.Clone()
at SourceCode.Forms.Authoring.Eventing.Action.Clone()
at SourceCode.Forms.Authoring.Eventing.Handler.Clone()
at SourceCode.Forms.Authoring.Eventing.Event.Clone()
at SourceCode.Forms.Authoring.Eventing.State.Clone()
at SourceCode.Forms.Authoring.Form.Clone()
at SourceCode.Framework.PersistableObject.CloneInContext(CloningContext context)
at SourceCode.Forms.AppStudio.AJAXCall.CloneSmartForm(Guid guid, String name, String description, Boolean checkIn, Int32 catID, Dictionary`2 views, CloningContext cloningContext)
at SourceCode.Forms.AppStudio.AJAXCall.ValidateAndCloneSmartForm(Guid guid, String name, String description, Boolean checkIn, Int32 catID, XmlDocument views)
at SourceCode.Forms.AppStudio.AJAXCall.ProcessRequest(HttpContext context)
Diagnoses
This error is typically caused by corrupted rule added when configure Filter in SmartObject action. When reviewing the form definition , I found the following invalid CDATA values:
<Value><Filter isSimple="True"><IsBlank><Item SourceType="ObjectProperty" SourceID="ActiveMinutes" DataType="number" /><Item SourceType="Value" DataType="Text"><SourceValue xml:space="preserve" /><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]><!&CDATAC]]></Item></IsBlank></Filter></Value>
Resolution
Removing and re-adding this filter resolves the issue.