XFA-pakke-DOM
TXFAPacketDOM indlæser enten en komplet XDP-strøm eller et ordnet PDF /XFA-pakkearray, eksponerer pakkerødder og afgrænsede local-name-sti-forespørgsler og understøtter element-, tekst-, CDATA-, attribut-, pakke-tilføj-, pakke-fjern- og pakke-omdøb-redigeringer
Tabsfrie urørte pakker
Hver indlæst strøm eller pakke beholder sine originale bytes og et strukturelt fingerprint; serialisering returnerer de nøjagtige bytes, når DOM'en er urørt, og en pakkearray-redigering omskriver kun den ændrede pakke, mens alle uændrede søskende bevares byte for byte
Kanonisk modificeret output
Modificerede træer bruger UTF-8 XML, deterministisk namespace- og attributorden, kvalificerede elementnavne, XML-entity-escaping, sikker CDATA-opdeling ved indlejret ]]>, self-closing tomme elementer og pakkeorden fra kildearrayet
Kanonisk output repræsenterer DOM-indhold snarere end leksikalsk finondata, så kommentarer, processing instructions, kildeindrykning, den oprindelige XML-deklaration og en kilde-DOCTYPE ikke genafspilles efter en redigering; interne entity-værdier udvides som tekst, og eksterne entities forbliver uopløste
Forespørgsler og redigeringer
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;
Et indledende // udfører en afgrænset descendant-forespørgsel, mens slash-adskilte segmenter vælger direkte børn; * matcher ethvert element, og et nul-baseret [N]-suffix vælger ét match
Pakkearray-publicering
SerializePacketArray returnerer ordnede TXFAPacketData-poster; giv hver post til THotPDF.AddXFAPacket, eller brug SerializeXDPStream med THotPDF.SetXFADocument til single-stream-formen
Budgetter
TXFADOMLimits.Default afgrænser aggregerede input- og outputbytes, pakkeantal, nodeantal, dybde, attributter pr. node, aggregerede attribut- og tekstbytes samt MaxQueryResults; parsing, mutationsvalidering, forespørgsel, fingerprinting og serialisering fejler med EHPDFXFAError, når en grænse overskrides
Se TXFAPacketDOM, TXFANode og TXFADOMLimits