XFA Packet DOM

TXFAPacketDOM nạp hoặc một XDP stream hoàn chỉnh hoặc một mảng packet PDF /XFA có thứ tự, phơi bày các gốc packet và các truy vấn đường dẫn local-name có chặn trên, và hỗ trợ các chỉnh sửa phần tử, văn bản, CDATA, thuộc tính, packet-add, packet-remove và packet-rename

Các packet chưa đụng tới giữ nguyên không mất dữ liệu

Mỗi stream hoặc packet đã nạp giữ các byte gốc và một dấu vân tay cấu trúc; tuần tự hóa trả về đúng các byte đó khi DOM chưa bị đụng tới, và một chỉnh sửa mảng packet chỉ viết lại packet thay đổi trong khi giữ nguyên từng byte các packet anh em không đổi

Đầu ra đã sửa theo dạng chính tắc

Cây đã sửa dùng XML UTF-8, thứ tự namespace và thuộc tính tất định, tên phần tử đủ điều kiện, escape thực thể XML, tách CDATA an toàn cho ]]> nhúng, phần tử rỗng tự đóng, và thứ tự packet theo mảng nguồn

Đầu ra chính tắc biểu diễn nội dung DOM thay vì các chi tiết từ vựng, nên comment, chỉ thị xử lý, thụt lề nguồn, khai báo XML gốc và DOCTYPE nguồn không được phát lại sau một lần sửa; giá trị thực thể nội bộ được mở rộng thành văn bản và các thực thể ngoài vẫn chưa được phân giải

Truy vấn và chỉnh sửa

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;

Một // ở đầu thực hiện một truy vấn hậu duệ có chặn trên, trong khi các đoạn phân tách bằng dấu gạch chọn con trực tiếp; * khớp mọi phần tử và hậu tố [N] gốc không chọn một kết quả khớp

Phát hành mảng packet

SerializePacketArray trả về các bản ghi TXFAPacketData có thứ tự; truyền từng bản ghi cho THotPDF.AddXFAPacket, hoặc dùng SerializeXDPStream với THotPDF.SetXFADocument cho dạng stream đơn

Ngân sách

TXFADOMLimits.Default chặn trên tổng byte vào ra, số packet, số nút, độ sâu, thuộc tính mỗi nút, tổng byte thuộc tính và văn bản, và MaxQueryResults; phân tích, xác thực biến đổi, truy vấn, vân tay và tuần tự hóa thất bại với EHPDFXFAError khi vượt biên

Xem TXFAPacketDOM, TXFANode và TXFADOMLimits