การนำเข้าโหนดด้วย NodeImporter
การนำเข้าโหนดด้วย NodeImporter
คู่มือนี้แสดงวิธีการย้ายเนื้อหาระหว่างสองระบบที่แตกต่างกัน Document อินสแตนซ์ใน Aspose.Words FOSS สำหรับ .NET โดยใช้แบบเฉพาะ NodeImporter คลาสและการควบคุมแบบละเอียด ImportFormatOptions, สำหรับสถานการณ์ที่คุณต้องการนำเข้าหนุดจำนวนมากอย่างมีประสิทธิภาพหรือควบคุมพฤติกรรมการนำเข้านอกเหนือจากพื้นฐาน ImportFormatMode ตัวเลือก. สำหรับแบบที่ง่ายกว่า Document.ImportNode, Document.AppendDocument, และ DocumentBuilder.InsertDocument เมธอดสะดวกสบาย, ดูที่ การทำงานกับเอกสาร คู่มือ.
NodeImporter: การนำเข้าซ้ำโดยไม่ต้องตั้งค่าซ้ำ
NodeImporter ถูกออกแบบมาสำหรับการนำเข้าโหนดแบบซ้ำจากเอกสารหนึ่งไปยังอีกเอกสารหนึ่ง เพื่อหลีกเลี่ยงค่าใช้จ่ายในการตั้งค่าต่อการเรียกของการนำเข้าแบบใช้ครั้งเดียว สร้างอ็อบเจกต์หนึ่งด้วย new NodeImporter(srcDoc, dstDoc, importFormatMode) — หรือการโหลดทับ new NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) เพื่อควบคุมที่ละเอียดกว่า — เพียงครั้งเดียว แล้วเรียก ImportNode(srcNode, isImportChildren) บนอินสแตนซ์เดียวกันสำหรับทุกโหนดที่คุณต้องการย้าย การใช้ NodeImporter อินสแตนซ์เดียวซ้ำหลายครั้งช่วยหลีกเลี่ยงค่าใช้จ่ายการตั้งค่าที่เกิดจากการนำเข้าที่สะดวกต่อการเรียกแต่ละครั้ง.
การควบคุมการนำเข้าแบบละเอียดด้วย ImportFormatOptions
ImportFormatOptions เพิ่มเติมตัวเลือกพื้นฐาน ImportFormatMode (UseDestinationStyles, KeepSourceFormatting, KeepDifferentStyles) ด้วยสวิตช์ที่ละเอียดกว่า: SmartStyleBehavior (bool) ควบคุมวิธีการนำเข้าสไตล์ที่มีชื่อเท่ากันในแหล่งและปลายทาง KeepSourceNumbering (bool) ควบคุมวิธีการนำเข้าการนับเลขเมื่อเกิดการทับซ้อนระหว่างแหล่งและปลายทาง IgnoreTextBoxes และ IgnoreHeaderFooter (bool) ปิดการจัดรูปแบบของแหล่งสำหรับเนื้อหาในกล่องข้อความและส่วนหัว/ส่วนท้าเมื่อ KeepSourceFormatting มีผล MergePastedLists (bool) รวมรายการที่วางลงกับรายการรอบข้างแทนการแยกไว้ ForceCopyStyles (bool) คัดลอกสไตล์ที่ขัดแย้งแทนการใช้เวอร์ชันของปลายทาง ในโหมด KeepSourceFormatting AdjustSentenceAndWordSpacing (bool) ปรับระยะห่างโดยอัตโนมัติ AppendDocumentWithNewPage (bool) บังคับให้ประเภทของส่วนแรกที่นำเข้าคือ NewPage.
เคล็ดลับและแนวปฏิบัติที่ดีที่สุด
- สร้างอินสแตนซ์
NodeImporterเพียงหนึ่งตัวและใช้ซ้ำในลูปของการเรียกImportNodeเมื่อทำการนำเข้าหลายโหนด — การสร้างอิมพอร์เตอร์ใหม่ต่อโหนดจะทำซ้ำงานตั้งค่าโดยไม่จำเป็น. - ส่งอินสแตนซ์
ImportFormatOptionsไปยัง overload ตัวสร้างNodeImporterเมื่อทางเลือกImportFormatModeธรรมดาไม่ละเอียดพอ — ตัวอย่างเช่น เพื่อรักษาการลำดับหมายเลขรายการแหล่งที่มาด้วยKeepSourceNumberingในขณะที่ยังคงใช้KeepSourceFormattingโดยรวม. - ตั้งค่า
IgnoreTextBoxesหรือIgnoreHeaderFooterเมื่อKeepSourceFormattingดึงสไตล์แหล่งที่มามากเกินกว่าที่คุณต้องการสำหรับประเภทเนื้อหานั้นเท่านั้น. NodeImporter.ImportNode(srcNode, isImportChildren)สะท้อนการเรียกนำเข้าระดับเอกสารในลายเซ็นและพฤติกรรม; ความแตกต่างอยู่ที่ประสิทธิภาพการใช้ซ้ำ ไม่ใช่ความหมายของการนำเข้า.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
| การนำเข้าหลายโหนดซ้ำหลายครั้งทำให้ช้า | ใช้การเรียกนำเข้าที่สะดวกต่อโหนดแต่ละโหนดแทนการใช้ NodeImporter ที่ใช้ซ้ำ | สร้าง NodeImporter เพียงอันเดียวและเรียก ImportNode บนมันสำหรับแต่ละโหนด |
| การนับลำดับรายการรีเซ็ตโดยไม่คาดคิดหลังจากการนำเข้า | ImportFormatOptions.KeepSourceNumbering ไม่ได้ตั้งค่า | สร้าง NodeImporter ด้วยอินสแตนซ์ของ ImportFormatOptions ที่ตั้งค่า KeepSourceNumbering ตามต้องการ |
| กล่องข้อความหรือเนื้อหาส่วนหัว/ส่วนท้ายรับการจัดรูปแบบต้นฉบับที่ไม่ต้องการ | โหมด KeepSourceFormatting จะใช้สไตล์ของแหล่งที่มาอย่างกว้างโดยค่าเริ่มต้น | ตั้งค่า IgnoreTextBoxes หรือ IgnoreHeaderFooter บน ImportFormatOptions ที่ส่งให้ NodeImporter |
FAQ
เมื่อใดที่ฉันควรใช้ NodeImporter แทนการเรียกนำเข้าเดียว?
เมื่อทำการนำเข้าหลายโหนดในลูป — สร้าง NodeImporter หนึ่งตัวล่วงหน้าและเรียก ImportNode ซ้ำ ๆ แทนที่จะจ่ายค่าใช้จ่ายการตั้งค่าต่อการเรียกแต่ละครั้ง.
อะไรที่ ImportFormatOptions เพิ่มเหนือ ImportFormatMode?
สวิตช์ที่ละเอียดกว่า เช่น SmartStyleBehavior, KeepSourceNumbering, IgnoreTextBoxes, IgnoreHeaderFooter, MergePastedLists, ForceCopyStyles, AdjustSentenceAndWordSpacing และ AppendDocumentWithNewPage, ซึ่งวางซ้อนบนตัวเลือกพื้นฐาน ImportFormatMode.
ส่วน NodeImporter.ImportNode ทำงานแตกต่างจากการนำเข้าที่ระดับเอกสารหรือไม่?
ไม่ — ทั้งสองรับโหนดต้นทางและแฟล็ก isImportChildren แล้วนำเข้าไปยังเอกสารปลายทาง; NodeImporter มีไว้เพื่อให้การตั้งค่าทำครั้งเดียวและนำกลับมาใช้ใหม่ในหลายการเรียก.
ฉันจะทำอย่างไรเพื่อให้การจัดลำดับรายการของเอกสารต้นทางคงเดิมเมื่อนำเข้า?
สร้าง NodeImporter ด้วย ImportFormatOptions ที่ KeepSourceNumbering เป็น true.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
NodeImporter | ทำการนำเข้าโหนดซ้ำจากเอกสารหนึ่งไปยังอีกเอกสารหนึ่ง โดยใช้การตั้งค่าเดิมซ้ำในแต่ละการเรียก |
NodeImporter(srcDoc, dstDoc, importFormatMode) | ตัวสร้างสำหรับการนำเข้าที่ใช้โหมดรูปแบบการนำเข้าขั้นพื้นฐานเท่านั้น |
NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) | ตัวสร้างที่รับ ImportFormatOptions แบบละเอียด |
NodeImporter.ImportNode(srcNode, isImportChildren) | นำเข้าโหนดจากเอกสารต้นทางไปยังเอกสารปลายทาง |
ImportFormatOptions | การตั้งค่าการนำเข้าแบบละเอียดที่ซ้อนอยู่บน ImportFormatMode |
ImportFormatOptions.SmartStyleBehavior | วิธีการนำเข้าแบบสไตล์ที่มีชื่อเดียวกัน |
ImportFormatOptions.KeepSourceNumbering | วิธีการนำเข้าการจัดลำดับที่ขัดแย้งกัน |
ImportFormatOptions.IgnoreTextBoxes / IgnoreHeaderFooter | ปิดการจัดรูปแบบต้นฉบับสำหรับกล่องข้อความ / ส่วนหัว-ส่วนท้าย ภายใต้ KeepSourceFormatting |
ImportFormatOptions.MergePastedLists | รวมรายการที่วางลงเข้ากับรายการรอบข้าง |
ImportFormatOptions.ForceCopyStyles | คัดลอกสไตล์ที่ขัดแย้งแทนที่จะใช้เวอร์ชันของปลายทาง |
ImportFormatOptions.AppendDocumentWithNewPage | บังคับให้ประเภทของส่วนที่นำเข้าครั้งแรกเป็น NewPage |