Estoy tratando de usar System.Xml.Linq
para crear documentos XHTML. Por lo tanto, la gran mayoría de los nodos en mis árboles debe utilizar este espacio de nombres:Cómo crear XElement con el espacio de nombres predeterminado para niños sin usar XNamespace en todos los nodos secundarios
http://www.w3.org/1999/xhtml
puedo crear XElement
nodos como alcance este espacio de nombres con bastante facilidad, utilizando un XNamespace
, así:
XNamespace xhtml = "http://www.w3.org/1999/xhtml";
// ...
new XElement(xhtml + "html", // ...
Sin embargo, no quiero tener que hacer un XNamespace
disponible en todo el código que crea nodos HTML, y tengo que ponerle un prefijo a cada uno de los nombres XElement
(y XAttribute
) que creo en consecuencia.
El formato de texto XML en sí tiene en cuenta este requisito, y permite establecer un espacio de nombre predeterminado en un antepasado heredado por descendientes, utilizando el atributo xmlns
reservado. Me gustaría hacer algo similar usando System.Xml.Linq
.
¿Esto es posible?
Esta solución parece pesada y aterradora, pero en realidad es agradable, liviana, extensible, hace que su código sea más corto y protege contra los errores tipográficos en los nombres de los elementos o atributos. ¡Guauu! –
Acabo de entender por qué tiene todas estas ventajas. Si bien la pregunta solo decía "Quiero espacios de nombres automáticos", lo más simple y sensato es "Me gustaría tener algunos métodos abreviados que encapsulen algunos conocimientos básicos de HTML", cuyo efecto de espacio de nombres es solo un buen subproducto. –