带有HTML内部XML的EDOMParseError

时间:2015-05-14 12:04:59

标签: xml delphi xml-parsing delphi-xe2

我有一个存储在变量中的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节点的内容?

1 个答案:

答案 0 :(得分:2)

假设星号只是用于突出显示的目的,你有两种选择。

如果要将嵌套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>