2015-05-14 2 views
1

У меня есть XML-строку, хранящуюся в переменной:EDOMParseError с HTML внутренней 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

Ваш XML не является допустимым XML. Вам необходимо обернуть содержимое СООБЩЕНИЯ в ***]]> например, или аналогичным образом избежать содержимого сообщения. – dash

+0

@dash я снова беру, как эта ошибка –

ответ

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> 
+0

Я принимаю эту ошибку, как эта линия EDOMParseError 1 ! [CDATA [

+0

Ok! Я использовал большое спасибо –

Смежные вопросы