zoukankan      html  css  js  c++  java
  • delphi IXMLDocument 解析xml 异常。

    最近在用delphi解析xml,使用的是UTF-16编码,含中文。

    做例子测试:

    Form包含一个Button,两个Memo。

    procedure TForm1.Button1Click(Sender: TObject);
    var
    xmldocument1:IXMLDocument;
    xmlstr:string;
    begin
    xmlstr:=memo1.Lines.text;
    xmldocument1:=TXMLDocument.Create(nil);
    xmldocument1.loadfromxml(xmlstr);
    memo2.Lines.text := xmldocument1.XML.text;
    end;

     点击转换按钮,弹出

    UTF-8,GBK,GB2312均可以,utf-16错误,查看IXMLDocument帮助文档,说支持UTF-16。

    修改代码

    procedure TForm1.Button1Click(Sender: TObject);
    var
    xmldocument1:IXMLDocument;
    xmlstr:widestring;
    begin
    xmlstr:=memo1.Lines.text;
    xmldocument1:=TXMLDocument.Create(nil);
    xmldocument1.loadfromxml(xmlstr);
    memo2.Lines.text := xmldocument1.XML.text;
    end;

    点击转换按钮:

    不报错,可以识别UTF-16,但转换后自动变为UTF-8,即使添加xmldocument1.encoding:='UTF-16';不起作用。

    但中午乱码,输出到文件中中文不乱码。

    修改代码:

    procedure TForm1.Button1Click(Sender: TObject);
    var
    xmldocument1:IXMLDocument;
    xmlstr:widestring;
    begin
    xmlstr:=memo1.Lines.text;
    xmldocument1:=TXMLDocument.Create(nil);
    xmldocument1.loadfromxml(xmlstr);
    memo2.Lines.text := xmldocument1.node.XML;
    end;

    正确。

  • 相关阅读:
    fork子进程
    多输入使用多线程
    多输入select
    多输入之轮询
    开启telnet
    slickedit编译调试linux应用程序
    电子书框架
    通用Makefile
    STDIN_FILENO和stdin
    libiconv交叉编译提示arm-none-linux-gnueabi-gcc
  • 原文地址:https://www.cnblogs.com/ITinfo/p/3890002.html
Copyright © 2011-2022 走看看