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