我有一个XML文档,其格式如下所示;
<root>
<DETAIL Replaces="XYZ" />
<DETAIL Description="Problem:<br><br>CRS750 dumps when panel F is opened<br><br>>>y" />
<DETAIL StepsToReproduce="ABC" />
</root>
使用以下功能,我可以将上面加载的XML文档转换为所需的格式;
Function ProcessDetail(ByVal xmlText As String) As String
xtr = New XmlTextReader("GetXMLFileLocation")
xtr.WhitespaceHandling = WhitespaceHandling.None
xmlDoc.Load(xtr)
xtr.Close()
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下的描述节点有一些'HTML'标签,因此会出现以下错误。请帮我避免,并给出以下输出。
ERROR MESSAGE : '<', hexadecimal value 0x3C, is an invalid attribute character. Line
1, position 1326.
DESIRED OUTPUT :
<root>
<DETAIL>
<REPLACES>XYZ</REPLACES>
<DESCRIPTION>Problem:<br><br>CRS750 dumps when panel F is opened<br>
<br>>>y</DESCRIPTION>
<STEPSTOREPRODUCE>ABC<STEPSTOREPRODUCE/>
<root>
答案 0 :(得分:0)
html-in-xml将是一个无效的XML文档,需要在生成xml的源代码中修复。例如XML解析器不可能分辨出什么应该是XML的一部分,什么只是一个html标记。例如xml应该看起来像
<somexmltag><p>This is a paragraph with embedded <i>italics</i></p>></somexmltag>
或使用CDATA:
<somexmltag><![CDATA[<p>This is a paragraph with embedded <i>italics</i></p>]]></somexmltag>
答案 1 :(得分:0)
使用&amp; lt;而不是&lt;,&amp; amp;代替&amp;,并且可选地&amp; gt;代替&gt;,也&amp; quot;用于“和/或&amp;用于'
如果要生成(或转义)HTML,请确保在其他字符之前更改和符号! : - )
您不能在属性中使用CDATA部分。此外,CDATA部分有时会出现在HTML中,并且它们不会嵌套,如果您不小心,可能导致代码破坏甚至安全漏洞。 (CDATA注射攻击)。