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