XFA Packet DOM

TXFAPacketDOM načte buď kompletní stream XDP, nebo uspořádané pole packetů PDF /XFA, vystavuje kořeny packetů a ohraničené dotazy lokálního jména a podporuje úpravy prvků, textu, CDATA, atributů, přidání packetu, odebrání packetu a přejmenování packetu

Lossless untouched packets

Každý načtený stream nebo packet si zachovává původní bajty a strukturní otisk; serializace vrací přesně tyto bajty, když DOM není dotčen, a úprava pole packetů přepíše pouze změněný packet, přičemž každého nezměněného sourozence zachová byte po bytu

Canonical modified output

Upravené stromy používají XML UTF-8, deterministický jmenný prostor a pořadí atributů, kvalifikované názvy prvků, escapování XML entit, bezpečné rozdělení CDATA pro vložené ]]>, samouzavírací prázdné prvky a pořadí packetů z pole zdroje

Kanonický výstup reprezentuje obsah DOM spíše než lexikální drobnosti, takže komentáře, instrukce zpracování, odsazení zdroje, původní deklarace XML a DOCTYPE zdroje se po úpravě nepřehrávají; hodnoty interních entit se rozšíří jako text a externí entity zůstávají nevyřešené

Queries and edits

var
  DOM: TXFAPacketDOM;
  Nodes: TArray<TXFANode>;
  XDP: TBytes;
begin
  DOM := TXFAPacketDOM.Create;
  try
    DOM.LoadXDPStream(SourceBytes);
    Nodes := DOM.SelectNodes('datasets', '//customer/name');
    if Length(Nodes) > 0 then
      Nodes[0].SetText('Updated & verified', True);
    XDP := DOM.SerializeXDPStream;
    PDF.SetXFADocument(XDP);
  finally
    DOM.Free;
  end;
end;

Úvodní // provádí ohraničený dotaz potomků, zatímco segmenty oddělené lomítky vybírají přímé potomky; * odpovídá jakémukoli prvku a přípona [N] od nuly vybírá jeden ze shod

Packet-array publication

SerializePacketArray vrací uspořádané záznamy TXFAPacketData; předejte každý záznam THotPDF.AddXFAPacket nebo použijte SerializeXDPStream s THotPDF.SetXFADocument pro jedno-streamovou formu

Budgets

TXFADOMLimits.Default omezuje agregované vstupní a výstupní bajty, počet packetů, počet uzlů, hloubku, atributy na uzel, agregované bajty atributů a textu a MaxQueryResults; analýza, ověření změn, dotazování, otiskování a serializace selhávají s EHPDFXFAError, když je překročena hranice

Viz TXFAPacketDOM, TXFANode a TXFADOMLimits