2010-09-21 1 views
0
 XmlDocument doc = new XmlDocument(); 
     doc.AppendChild(doc.CreateElement("Foo")); 
     doc.DocumentElement.InnerXml = "Test";  
     StringBuilder result = new StringBuilder(); 
     doc.WriteContentTo(XmlWriter.Create(result)); 

В конце концов, результат:Установка InnerXml для XmlDocument вызывает отсутствие End-Tag

<Foo>Test 

это означает, что конечный элемент отсутствует. Почему это и как я могу это исправить?

ответ

6

Проблема в том, что вы создаете XmlWriter, но не удаляете его, поэтому он не смывается. Попробуйте это:

using System; 
using System.Text; 
using System.Xml; 

class Test 
{ 
    static void Main() 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.AppendChild(doc.CreateElement("Foo")); 
     doc.DocumentElement.InnerXml = "Test";  
     StringBuilder result = new StringBuilder(); 
     using (XmlWriter writer = XmlWriter.Create(result)) 
     { 
      doc.WriteContentTo(writer); 
     } 
     Console.WriteLine(result); 
    } 
} 

Выход:

<?xml version="1.0" encoding="utf-16"?><Foo>Test</Foo>