Importowanie węzłów przy użyciu NodeImporter
Importowanie węzłów przy użyciu NodeImporter
Ten przewodnik pokazuje, jak przenieść treść między dwoma różnymi Document instancjami w Aspose.Words FOSS dla .NET przy użyciu dedykowanego NodeImporter klasy i szczegółowego ImportFormatOptions, dla scenariuszy, w których potrzebujesz importować wiele węzłów efektywnie lub kontrolować zachowanie importu poza podstawowym ImportFormatMode wyborem. Dla prostszych Document.ImportNode, Document.AppendDocument, oraz DocumentBuilder.InsertDocument metody ułatwiające, zobacz Praca z dokumentami poradnik.
NodeImporter: Powtarzalne importy bez powtarzającej się konfiguracji
NodeImporter jest przeznaczony do wielokrotnego importowania węzłów z jednego dokumentu do drugiego, unikając kosztu konfiguracji przy każdym wywołaniu przy jednorazowym imporcie. Utwórz go za pomocą new NodeImporter(srcDoc, dstDoc, importFormatMode) — lub przeciążenia new NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) dla większej kontroli — raz, a następnie wywołuj ImportNode(srcNode, isImportChildren) na tej samej instancji dla każdego węzła, który chcesz przenieść. Ponowne użycie jednej instancji NodeImporter w wielu wywołaniach eliminuje koszt konfiguracji, który pojawia się przy każdym wygodnym imporcie.
Precyzyjna kontrola importu przy użyciu ImportFormatOptions
ImportFormatOptions uzupełnia podstawowy wybór ImportFormatMode (UseDestinationStyles, KeepSourceFormatting, KeepDifferentStyles) o bardziej szczegółowe przełączniki: SmartStyleBehavior (bool) kontroluje, w jaki sposób style o identycznych nazwach w źródle i miejscu docelowym są importowane. KeepSourceNumbering (bool) kontroluje, jak numeracja jest importowana, gdy zachodzi konflikt między źródłem a miejscem docelowym. IgnoreTextBoxes i IgnoreHeaderFooter (bool) tłumią formatowanie źródła dla treści w polach tekstowych oraz w nagłówkach/stopkach, szczególnie gdy KeepSourceFormatting jest aktywne. MergePastedLists (bool) scala wklejone listy z otaczającymi listami zamiast pozostawiać je oddzielnie. ForceCopyStyles (bool) kopiuje konflikujące style zamiast ponownie używać wersji docelowej, w trybie KeepSourceFormatting. AdjustSentenceAndWordSpacing (bool) automatycznie dostosowuje odstępy. AppendDocumentWithNewPage (bool) wymusza, aby typ pierwszej zaimportowanej sekcji był NewPage.
Wskazówki i najlepsze praktyki
- Utwórz pojedynczy egzemplarz
NodeImporteri używaj go ponownie w pętli wywołańImportNodepodczas importowania wielu węzłów — tworzenie nowego importera dla każdego węzła niepotrzebnie powtarza pracę konfiguracyjną. - Przekaż egzemplarz
ImportFormatOptionsdo przeciążenia konstruktoraNodeImporter, gdy prosta opcjaImportFormatModenie jest wystarczająco precyzyjna — na przykład, aby zachować numerację listy źródeł przy użyciuKeepSourceNumbering, jednocześnie stosującKeepSourceFormattingw całości. - Ustaw
IgnoreTextBoxeslubIgnoreHeaderFooter, gdyKeepSourceFormattingwciąga więcej stylizacji źródłowej niż potrzebujesz dla tych typów treści. NodeImporter.ImportNode(srcNode, isImportChildren)odzwierciedla wywołanie importu na poziomie dokumentu pod względem sygnatury i zachowania; różnica polega na efektywności ponownego użycia, a nie na semantyce importu.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
| Powtarzające się importy wielu węzłów są wolne | Wywołanie importu wygodnego jest używane dla każdego węzła zamiast jednego wielokrotnie używanego NodeImporter | Utwórz pojedynczy NodeImporter i wywołaj ImportNode na nim dla każdego węzła |
| Numeracja listy resetuje się nieoczekiwanie po imporcie | ImportFormatOptions.KeepSourceNumbering nie zostało ustawione | Utwórz NodeImporter przy użyciu instancji ImportFormatOptions, która ustawia KeepSourceNumbering w razie potrzeby |
| Pole tekstowe lub zawartość nagłówka/stopki przejmuje niepożądane formatowanie źródła | Tryb KeepSourceFormatting domyślnie stosuje stylowanie źródła w szerokim zakresie | Ustaw IgnoreTextBoxes lub IgnoreHeaderFooter na ImportFormatOptions przekazanym do NodeImporter |
FAQ
Kiedy powinienem używać NodeImporter zamiast pojedynczego wywołania importu?
Podczas importowania wielu węzłów w pętli — utwórz jeden NodeImporter z góry i wywołuj ImportNode wielokrotnie, zamiast ponosić koszt konfiguracji przy każdym wywołaniu.
Co ImportFormatOptions dodaje poza ImportFormatMode?
Bardziej precyzyjne przełączniki, takie jak SmartStyleBehavior, KeepSourceNumbering, IgnoreTextBoxes, IgnoreHeaderFooter, MergePastedLists, ForceCopyStyles, AdjustSentenceAndWordSpacing i AppendDocumentWithNewPage, nakładane na podstawowy wybór ImportFormatMode.
Czy NodeImporter.ImportNode zachowuje się inaczej niż importowanie na poziomie dokumentu?
Nie — oba przyjmują węzeł źródłowy i flagę isImportChildren, a następnie importują go do dokumentu docelowego; NodeImporter istnieje, aby konfiguracja była wykonana raz i wykorzystywana w wielu wywołaniach.
Jak zachować niezmienione numerowanie listy w dokumencie źródłowym podczas importu?
Utwórz NodeImporter z ImportFormatOptions, gdzie KeepSourceNumbering jest true.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
NodeImporter | Wykonuje powtarzalny import węzłów z jednego dokumentu do drugiego, ponownie wykorzystując konfigurację w kolejnych wywołaniach |
NodeImporter(srcDoc, dstDoc, importFormatMode) | Konstruktor dla podstawowych importów wyłącznie w trybie formatu importu |
NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) | Konstruktor akceptujący drobnoziarniste ImportFormatOptions |
NodeImporter.ImportNode(srcNode, isImportChildren) | Importuje węzeł ze źródłowego dokumentu do dokumentu docelowego |
ImportFormatOptions | Drobnoziarniste ustawienia importu nakładane na ImportFormatMode |
ImportFormatOptions.SmartStyleBehavior | Jak importowane są style o tej samej nazwie |
ImportFormatOptions.KeepSourceNumbering | Jak importowane jest kolidujące numerowanie |
ImportFormatOptions.IgnoreTextBoxes / IgnoreHeaderFooter | Tłumi formatowanie źródłowe dla pól tekstowych / nagłówków-stopki w KeepSourceFormatting |
ImportFormatOptions.MergePastedLists | Łączy wklejone listy z otaczającymi listami |
ImportFormatOptions.ForceCopyStyles | Kopiuje konfliktujące style zamiast ponownego użycia wersji docelowej |
ImportFormatOptions.AppendDocumentWithNewPage | Ustawia typ pierwszej zaimportowanej sekcji na NewPage |