Delphi libxml2 xmlParseFile无法加载格式正确的XML
作为libxml2的新手,我不明白为什么xmlParseFile总是返回nilDelphi libxml2 xmlParseFile无法加载格式正确的XML,delphi,file,xml-parsing,delphi-xe,libxml2,Delphi,File,Xml Parsing,Delphi Xe,Libxml2,作为libxml2的新手,我不明白为什么xmlParseFile总是返回nil uses libxml2; procedure TForm1.FormCreate(Sender: TObject); var doc: xmlDocPtr; begin doc := xmlParseFile('1.xml'); // doc is nil doc := xmlParseFile('c:\1.xml'); // doc is again nil end; 示例1.xml: <
uses
libxml2;
procedure TForm1.FormCreate(Sender: TObject);
var
doc: xmlDocPtr;
begin
doc := xmlParseFile('1.xml'); // doc is nil
doc := xmlParseFile('c:\1.xml'); // doc is again nil
end;
示例1.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
</root>
所有的荣誉都归雷米所有,我会把答案而不是他放在这个问题上: 将Delphi包装器从PChar(在XE和XE2中是PWideChar)更改为PAnsiChar解决了这个问题。一旦函数的定义更改为
function xmlParseFile (const filename: PWideChar) : xmlDocPtr; cdecl;
external LIBXML2_SO;
这很好。所有的功劳都归雷米所有,我将用答案代替他来结束这一切: 将Delphi包装器从PChar(在XE和XE2中是PWideChar)更改为PAnsiChar解决了这个问题。一旦函数的定义更改为
function xmlParseFile (const filename: PWideChar) : xmlDocPtr; cdecl;
external LIBXML2_SO;
我在github上创建了一个项目
修复了Delphi XE2上的一些编码错误。(PChar->PAnsiChar)我在github上创建了一个项目
修复了Delphi XE2上的一些编码错误。(PCHAR -PANSICHAR)我在C++中使用LIXXML2多年没有任何问题,所以我不得不怀疑LIXXML2的Delphi绑定可能会有问题。libxml2.pas中如何声明
xmlParseFile()
?实函数需要一个PAnsiChar
作为输入。libxml2.pas是否声明xmlParseFile()
使用PAnsiChar
?这在Delphi XE中很重要,因为本地字符串类型是Unicode而不是Ansi。您是对的,将Delphi包装器从PChar(在XE和XE2中是PWideChar)更改为PAnsiChar解决了问题。一旦函数的定义更改为函数xmlParseFile(const filename:PChar):xmlDocPtr;cdecl;外部LIBXML2_SO;它工作得很好。RMY请您评语,我很乐意接受。我已经在C++中使用LIXXML2多年了,没有任何问题,所以我不得不怀疑LIXXML2的Delphi绑定可能会有问题。libxml2.pas中如何声明xmlParseFile()
?实函数需要一个PAnsiChar
作为输入。libxml2.pas是否声明xmlParseFile()
使用PAnsiChar
?这在Delphi XE中很重要,因为本地字符串类型是Unicode而不是Ansi。您是对的,将Delphi包装器从PChar(在XE和XE2中是PWideChar)更改为PAnsiChar解决了问题。一旦函数的定义更改为函数xmlParseFile(const filename:PChar):xmlDocPtr;cdecl;外部LIBXML2_SO;它工作得很好。雷米,请你给我一个答案,我很乐意接受。