Nhập Node bằng NodeImporter
Nhập các nút bằng NodeImporter
Hướng dẫn này cho thấy cách di chuyển nội dung giữa hai khác nhau Document các instance trong Aspose.Words FOSS cho .NET sử dụng bộ dành riêng NodeImporter lớp và chi tiết ImportFormatOptions, cho các kịch bản mà bạn cần nhập nhiều nút một cách hiệu quả hoặc kiểm soát hành vi nhập vượt quá mức cơ bản ImportFormatMode lựa chọn. Đối với các Document.ImportNode, Document.AppendDocument, và DocumentBuilder.InsertDocument phương thức tiện lợi, xem Làm việc với Tài liệu hướng dẫn.
NodeImporter: Nhập lặp lại mà không cần thiết lập lặp lại
NodeImporter được thiết kế cho việc nhập lặp lại các nút từ tài liệu này sang tài liệu khác, tránh chi phí thiết lập cho mỗi lần gọi của một lần nhập duy nhất. Tạo một đối tượng bằng new NodeImporter(srcDoc, dstDoc, importFormatMode) — hoặc phiên bản quá tải new NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) để kiểm soát chi tiết hơn — một lần, sau đó gọi ImportNode(srcNode, isImportChildren) trên cùng một thể hiện đó cho mỗi nút bạn cần chuyển. Việc tái sử dụng một thể hiện NodeImporter trong nhiều lần gọi tránh chi phí thiết lập mà một lần nhập tiện lợi mỗi lần gọi sẽ gây ra.
Kiểm soát nhập chi tiết với ImportFormatOptions
ImportFormatOptions bổ sung lựa chọn ImportFormatMode cơ bản (UseDestinationStyles, KeepSourceFormatting, KeepDifferentStyles) bằng các công tắc chi tiết hơn: SmartStyleBehavior (bool) kiểm soát cách các kiểu có cùng tên trong nguồn và đích được nhập. KeepSourceNumbering (bool) kiểm soát cách đánh số được nhập khi xảy ra xung đột giữa nguồn và đích. IgnoreTextBoxes và IgnoreHeaderFooter (bool) loại bỏ định dạng nguồn cho nội dung hộp văn bản và đầu/trang chân cụ thể khi KeepSourceFormatting đang có hiệu lực. MergePastedLists (bool) hợp nhất các danh sách đã dán với các danh sách xung quanh thay vì giữ chúng riêng biệt. ForceCopyStyles (bool) sao chép các kiểu xung đột thay vì tái sử dụng phiên bản của đích, trong chế độ KeepSourceFormatting. AdjustSentenceAndWordSpacing (bool) tự động điều chỉnh khoảng cách. AppendDocumentWithNewPage (bool) buộc loại phần đầu tiên được nhập thành NewPage.
Mẹo và Thực hành tốt nhất
- Tạo một thể hiện
NodeImporterduy nhất và tái sử dụng nó trong vòng lặp các lời gọiImportNodekhi nhập nhiều nút — việc tạo một importer mới cho mỗi nút sẽ lặp lại công việc thiết lập một cách không cần thiết. - Truyền một thể hiện
ImportFormatOptionsvào overload của hàm khởi tạoNodeImporterkhi lựa chọnImportFormatModeđơn giản không đủ chính xác — ví dụ, để giữ đánh số danh sách nguồn bằngKeepSourceNumberingtrong khi vẫn sử dụngKeepSourceFormattingcho toàn bộ. - Đặt
IgnoreTextBoxeshoặcIgnoreHeaderFooterkhiKeepSourceFormattingkéo vào nhiều kiểu dáng nguồn hơn mức bạn muốn chỉ cho các loại nội dung đó. NodeImporter.ImportNode(srcNode, isImportChildren)phản chiếu lời gọi nhập cấp tài liệu về chữ ký và hành vi; sự khác biệt là hiệu suất tái sử dụng, không phải ngữ nghĩa nhập.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
| Nhập lại nhiều nút lặp lại rất chậm | Mỗi nút sử dụng một lời gọi nhập tiện lợi thay vì một NodeImporter được tái sử dụng | Tạo một NodeImporter duy nhất và gọi ImportNode trên nó cho mỗi nút |
| Số thứ tự danh sách bị đặt lại một cách bất ngờ sau khi nhập | ImportFormatOptions.KeepSourceNumbering chưa được thiết lập | Xây dựng NodeImporter với một thể hiện ImportFormatOptions mà thiết lập KeepSourceNumbering theo nhu cầu |
| Nội dung hộp văn bản hoặc header/footer nhận định dạng nguồn không mong muốn | Chế độ KeepSourceFormatting áp dụng kiểu dáng nguồn một cách rộng rãi theo mặc định | Đặt IgnoreTextBoxes hoặc IgnoreHeaderFooter trên ImportFormatOptions được truyền cho NodeImporter |
FAQ
Khi nào tôi nên dùng NodeImporter thay vì một lời gọi nhập duy nhất?
Khi nhập nhiều nút trong một vòng lặp — tạo một NodeImporter ngay từ đầu và gọi ImportNode liên tục, thay vì phải trả chi phí thiết lập cho mỗi lời gọi.
Điều gì ImportFormatOptions bổ sung so với ImportFormatMode?
Các công tắc chi tiết hơn như SmartStyleBehavior, KeepSourceNumbering, IgnoreTextBoxes, IgnoreHeaderFooter, MergePastedLists, ForceCopyStyles, AdjustSentenceAndWordSpacing và AppendDocumentWithNewPage, được xếp lớp lên trên lựa chọn ImportFormatMode cơ bản.
Liệu NodeImporter.ImportNode có hoạt động khác so với việc nhập ở cấp độ tài liệu không?
Không — cả hai đều nhận một nút nguồn và một cờ isImportChildren, rồi nhập nó vào tài liệu đích; NodeImporter tồn tại để việc thiết lập được thực hiện một lần và tái sử dụng trong nhiều lời gọi.
Làm thế nào để giữ nguyên đánh số danh sách của tài liệu nguồn khi nhập?
Xây dựng NodeImporter với một ImportFormatOptions trong đó KeepSourceNumbering là true.
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
NodeImporter | Thực hiện việc nhập lại nhiều lần các nút từ tài liệu này sang tài liệu khác, tái sử dụng thiết lập qua các lần gọi |
NodeImporter(srcDoc, dstDoc, importFormatMode) | Constructor cho các import ở chế độ định dạng-import cơ bản |
NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) | Constructor chấp nhận ImportFormatOptions chi tiết |
NodeImporter.ImportNode(srcNode, isImportChildren) | Nhập một nút từ tài liệu nguồn vào tài liệu đích |
ImportFormatOptions | Cài đặt import chi tiết được xếp lớp trên ImportFormatMode |
ImportFormatOptions.SmartStyleBehavior | Cách nhập các kiểu có tên giống nhau |
ImportFormatOptions.KeepSourceNumbering | Cách nhập số thứ tự xung đột |
ImportFormatOptions.IgnoreTextBoxes / IgnoreHeaderFooter | Loại bỏ định dạng nguồn cho các hộp văn bản / tiêu đề-chân trang dưới KeepSourceFormatting |
ImportFormatOptions.MergePastedLists | Kết hợp các danh sách đã dán với các danh sách xung quanh |
ImportFormatOptions.ForceCopyStyles | Sao chép các kiểu xung đột thay vì tái sử dụng phiên bản của đích |
ImportFormatOptions.AppendDocumentWithNewPage | Ép buộc kiểu của phần đã nhập đầu tiên thành NewPage |