Так, проблема решена. Трабла была в следующем (взято из XMLDoc):| Код | procedure TXMLNode.CheckTextNode; begin { Create the actual text node when none already exists } if not DOMNode.hasChildNodes then begin DOMNode.appendChild(DOMNode.ownerDocument.createTextNode('')); SetChildNodes(nil); end else if (DOMNode.childNodes.length > 1) or not (DOMNode.childNodes[0].nodeType in [TEXT_NODE, CDATA_SECTION_NODE]) then XMLDocError(SNotSingleTextNode, [DOMNode.nodeName]); end;
|
т.е., проверяется узел на наличие чилдов и если наличие обнаружено, то XMLDoc считает, что данный нод не может содержать текстовое значение. Т.к. изначально в строке есть html-теги, то они воспринимаются за child-ы... Решение пока следующее - все < и > в ноде <string> заменяю на [ и ] соответственно. Вот код, может кто что предложит...
| Код | const C_String = '<string>'; C_UnString = '</string>'; var lPos: Integer; f: Boolean; begin lPos := 1; f := False; FResponse := Utf8ToAnsi(FResponse); while lPos <= Length(FResponse) do begin if Copy(FResponse, lPos, Length(C_String)) = C_String then begin f := True; Inc(lPos, Length(C_String)); Continue; end; if Copy(FResponse, lPos, Length(C_UnString)) = C_UnString then begin f := False; Inc(lPos, Length(C_UnString)); Continue; end; if (FResponse[lPos] = '<') and f then FResponse[lPos] := '['; if (FResponse[lPos] = '>') and f then FResponse[lPos] := ']'; Inc(lPos); end; FProc(AnsiToUtf8(FResponse)); end;
|
|