Importar nodos con NodeImporter
Importando nodos con NodeImporter
Esta guía muestra cómo mover contenido entre dos diferentes Document instancias en Aspose.Words FOSS para .NET usando la dedicada NodeImporter clase y de gran granularidad ImportFormatOptions, para escenarios donde necesita importar muchos nodos de manera eficiente o controlar el comportamiento de importación más allá de la básica ImportFormatMode elección. Para los más simples Document.ImportNode, Document.AppendDocument, y DocumentBuilder.InsertDocument métodos de conveniencia, consulte el Trabajando con Documentos guía.
NodeImporter: Importaciones repetidas sin configuración repetida
NodeImporter está diseñado para la importación repetida de nodos de un documento a otro, evitando el costo de configuración por cada llamada de una importación de uso único. Construya uno con new NodeImporter(srcDoc, dstDoc, importFormatMode) — o la sobrecarga new NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) para un control más fino — una sola vez, y luego invoque ImportNode(srcNode, isImportChildren) en esa misma instancia para cada nodo que necesite trasladar. Reutilizar una instancia de NodeImporter en muchas llamadas evita el costo de configuración que una importación de conveniencia por llamada genera cada vez.
Control de importación de gran detalle con ImportFormatOptions
ImportFormatOptions complementa la opción básica ImportFormatMode (UseDestinationStyles, KeepSourceFormatting, KeepDifferentStyles) con interruptores más finos: SmartStyleBehavior (bool) controla cómo se importan los estilos con nombres idénticos en el origen y el destino. KeepSourceNumbering (bool) controla cómo se importa la numeración cuando hay conflicto entre origen y destino. IgnoreTextBoxes y IgnoreHeaderFooter (bool) suprimen el formato del origen para el contenido de cuadros de texto y de encabezado/pie de página específicamente cuando KeepSourceFormatting está en vigor. MergePastedLists (bool) fusiona listas pegadas con listas adyacentes en lugar de mantenerlas separadas. ForceCopyStyles (bool) copia los estilos en conflicto en vez de reutilizar la versión del destino, en modo KeepSourceFormatting. AdjustSentenceAndWordSpacing (bool) ajusta automáticamente el espaciado. AppendDocumentWithNewPage (bool) obliga al tipo de la primera sección importada a NewPage.
Consejos y mejores prácticas
- Crea una única instancia de
NodeImportery reutilízala en un bucle de llamadas aImportNodeal importar muchos nodos — crear un nuevo importador por nodo repite innecesariamente el trabajo de configuración. - Pasa una instancia de
ImportFormatOptionsa la sobrecarga del constructorNodeImportercuando la opción simpleImportFormatModeno es lo suficientemente precisa — por ejemplo, para mantener la numeración de la lista de origen conKeepSourceNumberingmientras sigues usandoKeepSourceFormattingen general. - Configura
IgnoreTextBoxesoIgnoreHeaderFootercuandoKeepSourceFormattingincorpora más estilo de origen del que deseas para esos tipos de contenido. NodeImporter.ImportNode(srcNode, isImportChildren)replica la llamada de importación a nivel de documento en firma y comportamiento; la diferencia está en la eficiencia de reutilización, no en la semántica de importación.
Problemas comunes
| Problema | Causa | Corrección |
|---|---|---|
| Importaciones repetidas de muchos nodos son lentas | Se utiliza una llamada de importación de conveniencia por nodo en lugar de una reutilizada NodeImporter | Construye un único NodeImporter y llama a ImportNode sobre él para cada nodo |
| La numeración de la lista se restablece inesperadamente después de la importación | ImportFormatOptions.KeepSourceNumbering no se estableció | Construya NodeImporter con una instancia de ImportFormatOptions que establezca KeepSourceNumbering según sea necesario |
| El contenido del cuadro de texto o del encabezado/pie de página adopta el formato de origen no deseado | El modo KeepSourceFormatting aplica el estilo de origen de forma amplia por defecto | Establezca IgnoreTextBoxes o IgnoreHeaderFooter en el ImportFormatOptions que se pasa a NodeImporter |
FAQ
¿Cuándo debo usar NodeImporter en vez de una única llamada de importación?
Al importar muchos nodos en un bucle — crea un NodeImporter al inicio y llama a ImportNode repetidamente, en vez de incurrir en el coste de configuración en cada llamada.
¿Qué agrega ImportFormatOptions más allá de ImportFormatMode?
Interruptores más finos, como SmartStyleBehavior, KeepSourceNumbering, IgnoreTextBoxes, IgnoreHeaderFooter, MergePastedLists, ForceCopyStyles, AdjustSentenceAndWordSpacing y AppendDocumentWithNewPage, superpuestos a la opción base ImportFormatMode.
¿Se comporta NodeImporter.ImportNode de manera diferente a la importación a nivel de documento?
No — ambos toman un nodo fuente y una bandera isImportChildren y lo importan al documento de destino; NodeImporter existe para que la configuración se realice una sola vez y se reutilice en muchas llamadas.
¿Cómo mantengo intacta la numeración de listas del documento fuente al importarlo?
Construye NodeImporter con un ImportFormatOptions donde KeepSourceNumbering sea true.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
NodeImporter | Realiza importaciones repetidas de nodos de un documento a otro, reutilizando la configuración entre llamadas |
NodeImporter(srcDoc, dstDoc, importFormatMode) | Constructor para importaciones básicas exclusivamente en modo de formato de importación |
NodeImporter(srcDoc, dstDoc, importFormatMode, importFormatOptions) | Constructor que acepta ImportFormatOptions de gran precisión |
NodeImporter.ImportNode(srcNode, isImportChildren) | Importa un nodo del documento origen al documento destino |
ImportFormatOptions | Configuraciones de importación granulares superpuestas sobre ImportFormatMode |
ImportFormatOptions.SmartStyleBehavior | Cómo se importan los estilos con nombres idénticos |
ImportFormatOptions.KeepSourceNumbering | Cómo se importa la numeración en conflicto |
ImportFormatOptions.IgnoreTextBoxes / IgnoreHeaderFooter | Suprime el formato de origen para cuadros de texto / encabezados-pies de página bajo KeepSourceFormatting |
ImportFormatOptions.MergePastedLists | Fusiona listas pegadas con listas circundantes |
ImportFormatOptions.ForceCopyStyles | Copia estilos conflictivos en vez de reutilizar la versión del destino |
ImportFormatOptions.AppendDocumentWithNewPage | Forza el tipo de la primera sección importada a NewPage |