我有一个存储在变量中的XML字符串:



<RESULT>
    <ROW>
        <MESSAGE>
            <!DOCTYPE HTML>
            <html>
                <body>
                    hello html inner xml on delphi
                </body>
            </html>
        </MESSAGE>
    </ROW>
</RESULT>


我使用以下代码将字符串解析为TXmlDocument对象:



var
    xmldoc : TXmlDocument;
begin
    xml := LoadXmlData(resultXml);
end;


但是,它会产生错误:

EDOMParseError line 1 : <RESULT><ROW><MESSAGE><doctype html>


如何解析此Xml,以便可以检索MESSAGE节点的内容?

最佳答案

在假设星号仅用于突出显示的前提下,您有两种选择。

如果要将嵌套的HTML解析为XML,则需要删除HTML DOCTYPE声明。

如果不需要解析嵌套的HTML,则可以将其包装在CDATA部分中,如下所示:

<RESULT>
   <ROW>
       <MESSAGE><![CDATA[
           <!DOCTYPE HTML>
           <html><body>hello html inner xml on delphi</body></html>
       ]]></MESSAGE>
   </ROW>
</RESULT>

10-07 19:34
查看更多