libxml2 xmlParseFile не может загрузить правильно сформированный XML - PullRequest
1 голос
/ 29 декабря 2011

Будучи новичком в 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 хорошо сформирован как XML Spy 2007, так и инструментами xmllint.

Я использую предварительно скомпилированные библиотеки DLL из http://xmlsoft.org и пробую этот код как с DelphiAPI-2.6.26, так и с libxml2-pas-2-7-3-src без удачи.

Наверное, я что-то упустил?

Отладчик просто перепрыгивает через строку, так как он указывает на внешнюю ссылку, подобную этой:

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

Ответы [ 2 ]

2 голосов
/ 17 сентября 2012

Я создал проект на github https://github.com/ak47morozov/Delphi-Libxml2.

Исправлено несколько ошибок кодирования в Delphi XE2. (PChar -> PAnsiChar)

2 голосов
/ 04 января 2012

Учитывая все заслуги Реми, я поставлю вместо него ответ, чтобы он закрылся:

Изменение оболочки Delphi с PChar (то есть PWideChar в XE и XE2) на PAnsiChar решило проблему. После того, как определение функции было изменено на

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

все работало нормально.

...