XFA Packet DOM

TXFAPacketDOM, eksiksiz bir XDP stream'ini ya da sıralı bir PDF /XFA packet array'ini yükler, packet root'larını ve sınırlı local-name path sorgularını ortaya çıkarır ve element, text, CDATA, attribute, packet-ekleme, packet-silme ile packet-yeniden adlandırma düzenlemelerini destekler

Kayıpsız dokunulmamış packet'ler

Yüklenen her stream veya packet, özgün byte'larını ve yapısal bir parmak izini saklar; DOM'a dokunulmamışken serialization bu byte'ları birebir döndürür, bir packet-array düzenlemesi ise yalnızca değişen packet'i yeniden yazar ve değişmeyen her kardeşi byte düzeyinde korur

Canonical değiştirilmiş output

Değiştirilmiş ağaçlar UTF-8 XML, deterministik namespace ve attribute sırası, qualified element adları, XML entity escaping, gömülü ]]> için güvenli CDATA bölmesi, kendi kendine kapanan boş elementler ve kaynak array'den gelen packet sırası kullanır

Canonical output, sözdizimsel süsler yerine DOM content'ini temsil eder; bu yüzden düzenlemeden sonra yorumlar, processing instruction'lar, kaynak girintisi, özgün XML bildirimi ve kaynak DOCTYPE yeniden oynatılmaz. Dahili entity değerleri metin olarak genişletilir ve harici entity'ler çözülmemiş hâlde kalır

Sorgular ve düzenlemeler

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;

Baştaki // sınırlı bir descendant sorgusu yapar, slash ile ayrılmış segmentler doğrudan children seçer; * herhangi bir elementle eşleşir ve sıfır tabanlı [N] soneki tek bir eşleşmeyi seçer

Packet-array yayımlama

SerializePacketArray sıralı TXFAPacketData kayıtları döndürür; her kaydı THotPDF.AddXFAPacket'e verin veya tek stream biçimi için SerializeXDPStream'i THotPDF.SetXFADocument ile kullanın

Bütçeler

TXFADOMLimits.Default; toplam girdi ve çıktı byte'ını, packet sayısını, düğüm sayısını, derinliği, düğüm başına öznitelik sayısını, toplam öznitelik ve metin byte'ını ve MaxQueryResults değerini sınırlar; ayrıştırma, mutation doğrulama, sorgulama, fingerprint alma ve serileştirme bir sınır aşıldığında EHPDFXFAError ile başarısız olur

Ayrıca bkz. TXFAPacketDOM, TXFANode ve TXFADOMLimits