我该怎么解决这个问题呢?
Tdm = class(TDataModule)
HTTP: TIdHTTP;
XMLDoc: TXMLDocument;
...
var sStory: String;
...
sStory:= GetHTTP('http://localhost/MultiPlay_PHP/contentlesson.php');
begin
xmlDoc.XML.Text := sStory;
xmlDoc.Active :=true;
StartItemNode := XMLDoc.DocumentElement.ChildNodes.First;
ANode := StartItemNode;
错误从xmlDoc.Active代码开始。
<?xml version="1.0" encoding="UTF-8" ?>
- <WORDSET>
- <WORD NUMBER="1">
<ENGLISH>beat</ENGLISH>
<KOREAN>두드리다</KOREAN>
</WORD>
Project.exe引发了异常类EDOMParseError,并显示消息‘在文本内容中发现无效字符。但是当我从XML中删除朝鲜语字符时,代码是正常的。
发布于 2010-06-23 19:16:22
我看到你用的是Indy的http组件。当您获得一个URL时,您必须提供一个流(这可能是在您的GetHTTP方法中所做的)。当该流只包含xml而不包含其他内容时,可以直接将该流与TXMLDocument
的LoadFromStream
方法一起使用。TXMLDocument将确定编码,这样就不会让你浪费在字符串和编码上了。
当然,要使所有这些都起作用,contentlesson.php必须返回适当的XML (正如Robert Love所评论的)。如果你发布的部分正是你从该页面得到的,那么当你收到错误时,这不是你的错。
发布于 2010-06-23 19:14:30
我怀疑您的UTF服务器没有返回UTF-8编码的内容。您可以尝试通过将sStory: String
的声明更改为sStory : UTF8string
来更改结果的编码
使用下面的代码块,我不能重复这个问题。
var
sStory : Utf8String;
begin
sStory := '<?xml version="1.0" encoding="UTF-8" ?>' +
'<WORDSET>' +
'<WORD NUMBER="1">' +
'<ENGLISH>beat</ENGLISH>' +
'<KOREAN>두드리다</KOREAN>' +
'</WORD>' +
'</WORDSET>';
xmlDoc.XML.Text := sStory;
xmlDoc.Active := true;
end;
https://stackoverflow.com/questions/3099643
复制相似问题