2013-05-08 4 views
0

Xdocument를 사용하여 XML 파일을 생성하지만, 생성하는 코드가 효율적이지 않습니다 (코드에 새 오브젝트가 너무 많음). 코드의 어떤 부분을 변경해야하는지 알려주고 있는지 궁금합니다.xdocument를 사용하여 XML을 생성하기위한 효율적인 코드 생성

XDocument doc = new XDocument(); 

     foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("TEXTAREA")) 
     { 
      doc.Add(new XElement("Item", new XElement("GUID", el.Id), new XElement("Type", 
       (el.GetAttribute("type").ToUpper())), new XElement("Title", el.GetAttribute("title")), new XElement("Name", el.Name), 
       new XElement("Value", el.GetAttribute("value")), new XElement("MaxLength", el.GetAttribute("maxlength"))));     
      xmlcontents += Convert.ToString(doc.Document) + "\r\n"; 
     } 

많은 새로운 xElements를 사용했습니다. XElements를 제거 할 수있는 방법이 있습니까?

+0

달성하고자하는 작업은 무엇입니까? 메모리에 XDocument를 작성 하시겠습니까? 아니면 단순히 XML 마크 업과 함께 문자열이 필요합니까? 후자의 경우 XDocument 대신 XmlWriter를 사용하는 것이 더 효율적입니다. –

+0

@MartinHonnen : XML 문자열이 필요합니다. XML 문자열을 생성하기 위해 XMLWriter를 사용할 수 있다는 것을 의미합니까? 내가 어떻게 말해 주면 고맙겠습니다. – Pedram

답변

1

StringWriter를 통해 XmlWriter를 사용하는 경우 예 :

string xml; 

using (StringWriter sw = new StringWriter()) 
{ 
    using (XmlWriter xw = XmlWriter.Create(sw, new XmlWriterSettings() { Indent = true })) 
    { 
    xw.WriteStartDocument(); 
    xw.WriteStartElement("Root"); 
    foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("TEXTAREA")) 
    { 
     xw.WriteStartElement("Item"); 
     xw.WriteElementString("GUID", el.Id); 
     xw.WriteElementString("Type", el.GetAttribute("type").ToUpper()); 
     // write further elements the same way 
     xw.WriteEndElement(); 
    } 
    xw.WriteEndElement(); 
    xw.WriteEndDocument(); 
    } 
    xml = sw.ToString(); 
} 
관련 문제