Явные закрывающие теги элемента с пространством имен System.Xml.Linq

Я использую пространство имен System.Xml.Linq (.NET 3.5 SP1) для заполнения документа шаблона html тегами данных div (а затем сохраняю его на диск). Иногда теги div пусты, и это кажется проблемой, когда дело доходит до HTML. Согласно моим исследованиям, тег DIV не закрывается сам по себе. Поэтому, по крайней мере, в Firefox <div /> считается открывающим тегом div без соответствующего закрывающего тега.

Итак, когда я создаю новые элементы div, объявляя:

XElement divTag = new XElement("div"); 

Как заставить сгенерированный XML быть <div></div> вместо <div />?


person Matthew Ruston    schedule 20.01.2009    source источник


Ответы (4)


Я не уверен, почему вы получите пустой DIV (кажется немного бессмысленным!), Но:

divTag.SetValue(string.Empty);

Должен сделать это.

person Steven Robbins    schedule 20.01.2009
comment
Ага, как-то бессмысленно. Я просто был ленив и не хотел писать кучу if-проверок, чтобы определить, должен ли я писать эти теги или нет в базовый документ. - person Matthew Ruston; 20.01.2009

С XElement divTag = new XElement("div", String.Empty); вы получаете явный закрывающий тег

person Daniele Armanasco    schedule 10.12.2009

Я не знаю ответа на ваш вопрос, используя LINQ. Но есть проект под названием HTML Agility Pack на codeplex, который позволяет создавать HTML-документы и управлять ими, очень похожими на к тому, как мы можем манипулировать XML-документом, используя классы пространства имен System.Xml.

person red.clover    schedule 20.01.2009

Я сделал это. Работает как положено.

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

Что приводит ниже в качестве результата.

<script src = "value"></script>
person Mathivanan KP    schedule 23.03.2017