2009-01-20 12 views
6

Używam przestrzeni nazw System.Xml.Linq (.NET 3.5 SP1) do zapełniania dokumentu szablonu html znacznikami DIV danych (a następnie zapisywania ich na dysk). Czasami znaczniki div są puste i wydaje się, że jest to problem, jeśli chodzi o HTML. Według moich badań, znacznik DIV nie jest samozamykający. Dlatego też pod przeglądarką Firefox przynajmniej <div /> jest uznawany za znacznik otwierający div bez pasującego znacznika zamykającego.Jawne zamykanie znaczników elementów za pomocą przestrzeni nazw System.Xml.Linq

Więc, gdy tworzę nowe elementy div oświadczając:

XElement divTag = new XElement("div"); 

Jak mogę zmusić wygenerowany XML być <div></div> zamiast <div />?

Odpowiedz

5

Nie jestem pewien, dlaczego chcesz skończyć z pustym DIV (wydaje się nieco bezcelowe!), Ale:

divTag.SetValue(string.Empty); 

powinno wystarczyć.

+0

Ja, to trochę bez sensu. Byłem po prostu leniwy i nie chciałem napisać paczki sprawdzeń, aby ustalić, czy powinienem napisać te znaczniki, czy nie, do bazowego dokumentu. –

1

Nie znam odpowiedzi na twoje pytanie, używając LINQ. Istnieje jednak projekt o nazwie kodowej HTML Agility Pack, który umożliwia tworzenie dokumentów HTML i manipulowanie nimi w podobny sposób, w jaki możemy manipulować dokumentem XML przy użyciu klas przestrzeni nazw System.Xml.

2

Z XElement divTag = nowy XElement ("div", String.Empty); otrzymujesz jawnie zamykający tag

0

Zrobiłem to. Działaj zgodnie z oczekiwaniami.

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

Który podaje poniżej jako wynik.

<script src = "value"></script> 
Powiązane problemy