2009-01-20 9 views
6

Estoy usando el espacio de nombres (.NET 3.5 SP1) System.Xml.Linq para rellenar un documento de plantilla html con etiquetas de datos div (y luego guardarlo en el disco). Algunas veces las etiquetas div están vacías y esto parece ser un problema cuando se trata de HTML. De acuerdo con mi investigación, la etiqueta DIV no es de cierre automático. Por lo tanto, en Firefox al menos, una <div /> se considera una etiqueta div de apertura sin una etiqueta de cierre coincidente.Etiquetas de cierre de elementos explícitos con System.Xml.Linq Namespace

Por lo tanto, al crear nuevos elementos div declarando:

XElement divTag = new XElement("div"); 

¿Cómo puedo forzar el XML generado para ser <div></div> en lugar de <div />?

Respuesta

5

no estoy seguro de por qué te gustaría terminar con un DIV vacío (parece un poco sin sentido!) Pero:

divTag.SetValue(string.Empty); 

debe hacerlo.

+0

Yah, I es un poco inútil. Simplemente estaba siendo flojo y no quería escribir un montón de verificaciones para determinar si debía escribir esas etiquetas o no en el documento subyacente. –

1

No sé la respuesta a su pregunta utilizando LINQ. Pero hay un proyecto llamado HTML Agility Pack en codeplex que le permite crear y manipular documentos HTML de forma muy similar a la forma en que podemos manipular el documento XML utilizando las clases de espacio de nombres System.Xml.

2

Con XElement divTag = new XElement ("div", String.Empty); obtienes la etiqueta de cierre explícita

0

Lo hice. Trabajando como se esperaba

myXml = new XElement("script", new XAttribute("src", "value")); 
myXml .Value = ""; 

Lo que da más abajo como resultado.

<script src = "value"></script> 
Cuestiones relacionadas