DOM pakietów XFA

TXFAPacketDOM ładuje kompletny strumień XDP albo uporządkowaną tablicę pakietów PDF /XFA, wystawia korzenie pakietów i ograniczone zapytania ścieżkowe po lokalnych nazwach oraz wspiera edycje elementów, tekstu, CDATA, atrybutów, dodawania, usuwania i zmiany nazw pakietów

Bezstratne nietkane pakiety

Każdy załadowany strumień lub pakiet zachowuje oryginalne bajty i strukturalny odcisk; serializacja zwraca dokładnie te bajty, gdy DOM jest nietkany, a edycja tablicy pakietów przepisuje tylko zmieniony pakiet, zachowując bajtowo każdy niezmieniony sąsiad

Kanoniczne wyjście po modyfikacji

Zmodyfikowane drzewa używają XML UTF-8, deterministycznej kolejności przestrzeni nazw i atrybutów, kwalifikowanych nazw elementów, eskapowania encji XML, bezpiecznego dzielenia CDATA dla wbudowanego ]]>, samozamykających się pustych elementów oraz kolejności pakietów z tablicy źródłowej

Kanoniczne wyjście reprezentuje zawartość DOM, a nie leksykalne detale, więc komentarze, instrukcje przetwarzania, wcięcia źródła, pierwotna deklaracja XML i źródłowy DOCTYPE nie są odtwarzane po edycji; wartości encji wewnętrznych są rozwijane jako tekst, a encje zewnętrzne pozostają nierozwiązane

Zapytania i edycje

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;

Wiodące // wykonuje ograniczone zapytanie po potomkach, a segmenty oddzielone ukośnikiem wybierają bezpośrednie dzieci; * pasuje do dowolnego elementu, a przyrostek [N] liczony od zera wybiera jedno dopasowanie

Publikacja tablicy pakietów

SerializePacketArray zwraca uporządkowane rekordy TXFAPacketData; przekazuj każdy rekord do THotPDF.AddXFAPacket albo użyj SerializeXDPStream z THotPDF.SetXFADocument dla formy pojedynczego strumienia

Budżety

TXFADOMLimits.Default ogranicza zagregowane bajty wejścia i wyjścia, liczbę pakietów, liczbę węzłów, głębokość, atrybuty na węzeł, zagregowane bajty atrybutów i tekstu oraz MaxQueryResults; parsowanie, walidacja mutacji, zapytania, fingerprinting i serializacja kończą się wyjątkiem EHPDFXFAError po przekroczeniu granicy

Zobacz TXFAPacketDOM, TXFANode i TXFADOMLimits