Utilizo las tecnologías .NET XML de forma bastante extensa en mi trabajo. Una de las cosas que más me gusta es el motor XSLT, más precisamente su extensibilidad. Sin embargo, hay una pequeña pieza que sigue siendo una fuente de molestia. Nada importante o algo con lo que no podamos vivir, pero nos impide producir el hermoso XML que nos gustaría producir.Gestión adecuada del espacio de nombres en .NET XmlWriter
Una de las cosas que hacemos es transformar nodos en línea e importar nodos de un documento XML a otro.
Lamentablemente, cuando se guarda nodos a un XmlTextWriter
(en realidad cualquier XmlWriter.Create(Stream)
devoluciones), las definiciones de espacio de nombres obtener todos arrojados allí, sin tener en cuenta que es necesario (se han definido anteriormente) o no. Se obtiene el siguiente tipo de xml:
<root xmlns:abx="http://bladibla">
<abx:child id="A">
<grandchild id="B">
<abx:grandgrandchild xmlns:abx="http://bladibla" />
</grandchild>
</abx:child>
</root>
¿Alguien tiene una sugerencia en cuanto a cómo convencer a .NET para ser eficiente sobre sus definiciones de espacio de nombres?
Gracias, Boaz
PS. Como una ventaja adicional, me gustaría sobrescribir el espacio de nombres predeterminado, cambiándolo a medida que escribo un nodo.
'' XmlTextReader' y XmlTextWriter' se amortizan en esencia, y no pueden ser utilizados directamente si se está trabajando con los métodos de 'create' recomendados. En cualquier caso, esto fue aquí cuando agregué la recompensa, así que espero que no sea elegible. No responde la pregunta, que está perfectamente redactada como tal, * viz *, "cómo convencer a .NET para que sea eficiente acerca de sus definiciones de espacio de nombres". Otorgo que solo sea posible a través de un lector o escritor personalizado, pero eso es un truco si hay una solución nativa. – harpo