Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#8

Re: LibXML2 und LibXSLT Einsetzen

  Alt 10. Nov 2007, 17:28
Also, ich probiere es jetzt so:

Delphi-Quellcode:
var
  doc: xmlDocPtr;
  xslt: xsltStylesheetPtr;
  xsltresult: xmlDocPtr;
  xsltcontext: xsltTransformContextPtr;

  params: ppchar;

  str: WideString;
  pint: PInteger;
  pxmlchar: xmlCharPtr;
  ppxmlchar: xmlCharPtrPtr;
begin
  Result := '';

  xmlInitParser();
  xmlSubstituteEntitiesDefault(1);
  params := nil;

  doc := xmlParseFile(pchar('gruss.xml')); // load and parse xml
  xslt := xsltParseStylesheetFile(pchar('gruss.xsl')); // load and parse xsl
  xsltcontext := xsltNewTransformContext(xslt, doc); // create context
  xsltresult := xsltApplyStylesheet(xslt, doc, Params); // transform

  if (doc <> nil) and (xslt <> nil) and
     (xsltcontext <> nil) and (xsltresult <> nil) then
  begin
    str := '';

    pxmlchar := @str;
    ppxmlchar := @pxmlchar;

    New(pint);
    xsltSaveResultToString(ppxmlchar, pint, xsltresult, xslt);
    Dispose(pint); // Größe wird nicht weiter benötigt

    Result := str;
  end;
Parser-Cleanup am Ende soll jetzt erstmal egal sein: FreeTransformContext etc. kommen später.

Es geht schon mal soweit, daß keine AV mehr kommt. Für einen lokalen PInt einen Integer zu definieren war mir zu blöd, daher die New/Dispose Geschichte.

Problem: str ist nach xsltSaveResultToString leer. Da hab ich doch irgendwo Bockmist mit den Pointern - nur ich sehs im Moment nicht.

Kann denn keiner Helfen <- ich liebe diesen Spruch

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat