2011-12-27 19 views
6

के साथ घोषणापत्र को शामिल करने के लिए कैसे करें मैं अपनी वेब सेवा के लिए एक XML प्रतिक्रिया लिखने की कोशिश कर रहा हूं, हालांकि मैं यह नहीं समझ सकता कि प्रतिक्रिया में घोषणा कैसे दिखाई दे सकती है।XElement.ToString()

मेरे कोड इसलिए की तरह है:

StringBuilder sBuilder = new StringBuilder(); 
using (XmlWriter writer = XmlWriter.Create(sBuilder)) 
{ 
    writer.WriteStartDocument(); 
    writer.WriteStartElement("ReportResponse"); 
    Response.WriteXml(writer); 
    writer.WriteEndElement(); 
    writer.WriteEndDocument(); 
} 

var response = XElement.Parse(sBuilder.ToString()); 
return response; 

प्रतिक्रिया प्रतिक्रिया डेटा भंडारण के लिये सिर्फ एक POCO है।

मुझे पता है कि Save विधि में घोषणा शामिल है और ToString() विधि नहीं है। मुझे अपनी घोषणा वापस ToString() के साथ लिखनी है।

मैं वास्तव में सिर्फ अपनी एक्सआरएल को कस्टम एक्सएमएल लौटने के लिए 100 बार अपनी स्ट्रिंग कास्टिंग किए बिना कस्टम आरएमटी सेवा से वापस लौटना चाहता हूं। क्या यह भी संभव है या सिर्फ मेरे पहियों कताई कर रहा हूँ?

+2

क्लास का उपयोग क्यों न करें जिसे आप एक्सएमएल को क्रमबद्ध करते हैं? – Maess

+0

मैं इस दृष्टिकोण का उपयोग कर सकता हूं लेकिन मैं अलग-अलग कारणों से एक ही समस्या में भागता हूं। – BentOnCoding

+0

यदि आप XML घोषणा चाहते हैं तो आप 'XElement' क्यों नहीं लौट रहे हैं और 'XDocument' नहीं? – Jacob

उत्तर

0

आप XML घोषणा शामिल करना चाहते हैं, तो आप इसे इस तरह कर सकते हैं:

XDocument xdoc = XDocument.Parse(xmlString); 
StringBuilder builder = new StringBuilder(); 
using (TextWriter writer = new StringWriter(builder)) 
{ 
    xdoc.Save(writer); 
} 
Console.WriteLine(builder); 

अद्यतन: मैंने देखा है, कि StringWriter लूट एन्कोडिंग। तो एक और विकल्प ऐसा करना है:

string docWithDeclaration = xdoc.Declaration + xdoc.ToString();