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