首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >EDOM解析错误(在文本中发现无效字符)/朝鲜语字符问题

EDOM解析错误(在文本中发现无效字符)/朝鲜语字符问题
EN

Stack Overflow用户
提问于 2010-06-23 15:18:17
回答 2查看 5.3K关注 0票数 3

我该怎么解决这个问题呢?

代码语言:javascript
代码运行次数:0
运行
复制
  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代码开始。

代码语言:javascript
代码运行次数:0
运行
复制
<?xml version="1.0" encoding="UTF-8" ?> 
- <WORDSET>
- <WORD NUMBER="1">
  <ENGLISH>beat</ENGLISH> 
  <KOREAN>두드리다</KOREAN> 
  </WORD>

Project.exe引发了异常类EDOMParseError,并显示消息‘在文本内容中发现无效字符。但是当我从XML中删除朝鲜语字符时,代码是正常的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-23 19:16:22

我看到你用的是Indy的http组件。当您获得一个URL时,您必须提供一个流(这可能是在您的GetHTTP方法中所做的)。当该流只包含xml而不包含其他内容时,可以直接将该流与TXMLDocumentLoadFromStream方法一起使用。TXMLDocument将确定编码,这样就不会让你浪费在字符串和编码上了。

当然,要使所有这些都起作用,contentlesson.php必须返回适当的XML (正如Robert Love所评论的)。如果你发布的部分正是你从该页面得到的,那么当你收到错误时,这不是你的错。

票数 2
EN

Stack Overflow用户

发布于 2010-06-23 19:14:30

我怀疑您的UTF服务器没有返回UTF-8编码的内容。您可以尝试通过将sStory: String的声明更改为sStory : UTF8string来更改结果的编码

使用下面的代码块,我不能重复这个问题。

代码语言:javascript
代码运行次数:0
运行
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3099643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档