0

以下のような形式の 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 Doc を目的の形式に変換できます。

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>
4

2 に答える 2

0

html-in-xml は無効な XML ドキュメントであり、xml を生成するソースで修正する必要があります。たとえば、XML パーサーでは、何が XML の一部であり、何が単なる html タグであるかを判断することは不可能です。たとえば、xml は次のようになります。

<somexmltag>&lt;p&gt;This is a paragraph with embedded &lt;i&gt;italics&lt;/i&gt;&lt;/p>&gt;</somexmltag>

またはCDATAを使用:

<somexmltag><![CDATA[<p>This is a paragraph with embedded <i>italics</i></p>]]></somexmltag>
于 2012-10-01T03:23:51.513 に答える
0

使用 < <、& の代わりに & の代わりに、オプションで > > の代わりに " for " および/または ' for '

HTML を生成 (またはエスケープ) している場合は、必ず他の文字の前に and 記号を変更してください! :-)

属性内で CDATA セクションを使用することはできません。また、CDATA セクションは HTML で発生することがあり、ネストされていないため、注意しないとコードが破損したり、セキュリティ ホールが発生したりする可能性があります。(CDATA インジェクション攻撃)。

于 2012-10-01T07:34:58.953 に答える