XFA-pakket-DOM
TXFAPacketDOM laadt ofwel een complete XDP-stroom of een geordende PDF /XFA-pakketarray, toont pakketwortels en begrensde lokale-naam padquery\’s, en ondersteunt element-, tekst-, CDATA-, attribuut-, pakket-toevoegen-, pakket-verwijderen en pakket-hernoemen bewerkingen
Verliesvrije onaangetaste pakketten
Elke geladen stroom of pakket behoudt zijn oorspronkelijke bytes en een structurele vingerafdruk; serialisatie geeft die exacte bytes terug wanneer de DOM onaangetast is, en een pakketarray-bewerking herschrijft alleen het gewijzigde pakket terwijl bytebehoud elke ongewijzigde sibling garandeert
Canonieke gewijzigde uitvoer
Gewijzigde bomen gebruiken UTF-8 XML, deterministische naamruimte- en attribuutvolgorde, gekwalificeerde elementnamen, XML-entiteit-escaping, veilige CDATA-splitsing voor ingebed ]]>, zelfsluitende lege elementen en pakketvolgorde uit de bronarray
Canonieke uitvoer vertegenwoordigt DOM-inhoud in plaats van lexicale trivialiteiten, dus commentaar, verwerkingsinstructies, broninspringing, de oorspronkelijke XML-verklaring en een bron DOCTYPE worden niet herhaald na een bewerking; interne entiteitswaarden worden als tekst uitgebreid en externe entiteiten blijven onopgelost
Query\’s en bewerkingen
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;
Een voorloop // voert een begrensde afstammingsquery uit, terwijl slash-gescheiden segmenten directe kinderen selecteren; * matcht elk element en een achtervoegsel [N] met nulbasis selecteert één match
Pakketarray-publicatie
SerializePacketArray geeft geordende TXFAPacketData-records terug; geef elk record door aan THotPDF.AddXFAPacket, of gebruik SerializeXDPStream met THotPDF.SetXFADocument voor de enkelvoudige-stroomvorm
Budgetten
TXFADOMLimits.Default begrenst geaggregeerde invoer- en uitvoerbytes, pakketantal, knooppuntaantal, diepte, attributen per knoop, geaggregeerde attribuut- en tekstbytes en MaxQueryResults; parsen, mutatievalidatie, query\’s, vingerafdrukken en serialisatie falen met EHPDFXFAError wanneer een grens wordt overschreden
Zie TXFAPacketDOM, TXFANode en TXFADOMLimits