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