2010-03-17 6 views
10

I ist ein XDocument haben, die wie folgt aussieht:Erzwingen XDocument.ToString(), um den End-Tag enthalten, wenn keine Daten

XDocument outputDocument = new XDocument(
       new XElement("Document", 
        new XElement("Stuff") 
       ) 
      ); 

Dass, wenn ich

outputDocument.ToString() 

Ausgänge zu diesem Aufruf:

<Document> 
    <Stuff /> 
</Document> 

Aber ich will es so aussehen:

Ich weiß, der erste ist korrekt, aber ich muss es auf diese Weise ausgeben. Irgendwelche Vorschläge?

Antwort

12

Setzen Sie die Value Eigenschaft jedes leeren XElement speziell auf eine leere Zeichenfolge.

// Note: This will mutate the specified document. 
    private static void ForceTags(XDocument document) 
    { 
     foreach (XElement childElement in 
      from x in document.DescendantNodes().OfType<XElement>() 
      where x.IsEmpty 
      select x) 
     { 
      childElement.Value = string.Empty; 
     } 
    } 
+0

Vielen Dank! Ich war auf dem richtigen Weg und versuchte, eine String.Empty in die XDocument-Deklaration zu setzen, aber anscheinend wird sie dort ignoriert. –

+0

Wie können wir die umgekehrte Transformation erreichen? d. h. anstelle von würde ich gerne sehen. – Kamyar

Verwandte Themen