2012-10-04 9 views
5

मैंने XMLSerializer क्लास का उपयोग करके ऑब्जेक्ट को क्रमबद्ध करने के लिए कुछ .NET कोड लिखा है।एक .net ऑब्जेक्ट को क्रमबद्ध करें और डॉक्टरेट को छोड़ दें?

public static string serialize(object o) 
    { 
      Type type = o.GetType(); 
      System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(type);     
      System.IO.StringWriter writer = new System.IO.StringWriter(); 
      serializer.Serialize(writer, o);     
      return writer.ToString();   
    } 

उत्पादन इस तरह दिखता है:

<?xml version="1.0" encoding="utf-16"?> 
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <string>a</string> 
    <string>b</string> 
    <string>c</string> 
</ArrayOfString> 

बहुत बढ़िया है, लेकिन क्या मैं वास्तव में चाहते हैं शुरुआत में एक्सएमएल doctype घोषणा के बिना बस रूट नोड प्राप्त करने के लिए है।

कारण मैं ऐसा करना चाहता हूं क्योंकि मैं एक्सएमएल धारावाहिक वस्तु के रूट तत्व का उपयोग किसी अन्य XML दस्तावेज़ के हिस्से के रूप में करना चाहता हूं।

+0

मैं जोड़ने चाहिए कि मैं कुछ मैं स्ट्रिंग परिवर्तन के साथ ऐसा कर सकते हैं कि हूँ, लेकिन मैं एक अंतर्निहित हो सकता है उम्मीद कर रही थी ऐसा करने के लिए तंत्र में। –

+0

वास्तव में कोई जवाब नहीं है, लेकिन आप हमेशा str.substring (str.indexof ('>') + 1 जैसे कुछ के साथ जा सकते हैं। (मैं सी # का उपयोग नहीं करता इसलिए सिंटैक्स के बारे में सुनिश्चित नहीं है लेकिन आपको विचार मिलता है) – OneOfOne

+3

आपके द्वारा दिखाए गए स्निपेट में कोई कार्यप्रणाली नहीं है। – Joey

उत्तर

10

XmlWriterSettings XML घोषणा न करने का एक संपत्ति (OmitXmlDeclaration) है:

public static string Serialize(object obj) 
{ 
    var builder = new StringBuilder(); 
    var xmlSerializer = new XmlSerializer(obj.GetType()); 
    using (XmlWriter writer = XmlWriter.Create(builder, 
     new XmlWriterSettings() { OmitXmlDeclaration = true })) 
    { 
     xmlSerializer.Serialize(writer, obj); 
    } 
    return builder.ToString(); 
} 
+0

वही था जो मुझे चाहिए था। धन्यवाद! –

संबंधित मुद्दे