DETAIL
複数の要素を含む XML ドキュメントがあります。各DETAIL
要素にはUpdateDate
、Description
属性を含めることができます。たとえば、短い例を次に示します。
<MyDocument>
<DETAIL UpdateDate='18-Sept-2012' />
<DETAIL UpdateDate='18-Sept-2012' Description='A description goes here' />
</MyDocument>
すべての属性が子要素になるように XML を変換する必要があります。たとえば、次のようになります。
<MyDocument>
<DETAIL>
<UpdateDate>18-Sept-2012</UpdateDate>
</DETAIL>
<DETAIL>
<UpdateDate>18-Sept-2012</UpdateDate>
<Description>A description goes here</Description>
</DETAIL>
</MyDocument>
XML を変換するために使用している方法は次のようになります。
Function ProcessDetail(ByVal xmlText As String) As String
Dim xmlDoc As New XmlDocument()
xmlDoc.LoadXml(xmlText)
Dim sDetail As New StringBuilder()
sDetail.Append("<DETAIL>")
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.Name.ToUpper & ">" & attribute.Value & "</" & attribute.Name.ToUpper & ">")
Next
End If
Next
sDetail.Append("</DETAIL>")
Return sDetail.ToString()
End Function
このメソッドは、ほとんどのDETAIL
要素に対して正常に機能しますが、次のような要素を変換しようとすると失敗します。
<DETAIL Description='Problem:<br><br>CRS750 dumps when panel F is opened' />
<
属性値にandなどの文字が予約されているため、次のような>
例外がスローされます。
error message - `'<', hexadecimal value 0x3C, is an invalid attribute character. Line 1, position 1326.`
DETAIL
例外をスローせずにこれらのタイプの要素を変換できるようにメソッドを修正するにはどうすればよいですか?