I have an XML document which contains multiple DETAIL elements. Each DETAIL element can contain UpdateDate and Description attributes. For instance, here is a short example:
I need to transform the XML so that all the attributes become child elements, for instance:
18-Sept-2012
18-Sept-2012
A description goes here
The method I am using to transform the XML looks like this:
Function ProcessDetail(ByVal xmlText As String) As String
Dim xmlDoc As New XmlDocument()
xmlDoc.LoadXml(xmlText)
Dim sDetail As New StringBuilder()
sDetail.Append("")
For Each detailNode As XmlNode In xmlDoc.SelectNodes("//DETAIL")
If Not detailNode.Attributes Is Nothing Then
For Each attribute As XmlAttribute In detailNode.Attributes
sDetail.Append("" & attribute.Value & "" & attribute.Name.ToUpper & ">")
Next
End If
Next
sDetail.Append("")
Return sDetail.ToString()
End Function
This method works fine for most DETAIL elements, but it fails when it tries to transform an element that looks like this:
Since it has reserved charaters, such as < and > in the attribute value, it throws an exception that says:
error message - `'
How can I fix my method so that it can transform these types of DETAIL elements without throwing an exception?