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