delphi - libxml2 xmlParseFile无法加载格式正确的XML

标签 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:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
</root>


据报道,XML Spy 2007和xmllint工具格式良好。

我使用来自http://xmlsoft.org的预编译DLL,并尝试同时使用DelphiAPI-2.6.26和libxml2-pas-2-7-3-src的此代码,但不走运。

我想我缺少了什么?

调试器仅跳过该行,因为它指向这样的外部引用:

function xmlParseFile (const filename: PChar) : xmlDocPtr; cdecl; external LIBXML2_SO;

最佳答案

归功于雷米,我将用答案代替他来结束这个问题:

将Delphi包装器从PChar(在XE和XE2中为PWideChar)更改为PAnsiChar可以解决此问题。一旦函数的定义更改为

function xmlParseFile (const filename: PWideChar) : xmlDocPtr; cdecl; 
external LIBXML2_SO; 


工作正常。

关于delphi - libxml2 xmlParseFile无法加载格式正确的XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8667355/

相关文章:

delphi - MMX 比 Delphi 自己的建模好吗?

c++ - 如何在Delphi中进行C++参数数组指针运算

c - 如何比较文件中的字符串和标准输入字符串

java - 如何将单个单词转换为有效的 xml?

java - 在 Java 或 Scala 中解析扁平的、大量属性的 xml 的最快方法

xml-parsing - 使用 XML1.1 解析 unicode 字符 (0x2)

delphi - 在 ibm bluemix 中运行 Windows 应用程序

delphi - 在哪里定义使用 {$IFDEF} 测试的符号?

C - 数组,从文件读取到结构数组(calloc realloc free...)

MySQL 全文搜索和最小搜索词长度