मैं इस तरह एक्सएमएल उत्पन्न करने के लिए कोशिश कर रहा हूँ:नेट एक्सएमएल क्रमबद्धता
<?xml version="1.0"?>
<!DOCTYPE APIRequest SYSTEM
"https://url">
<APIRequest>
<Head>
<Key>123</Key>
</Head>
<ObjectClass>
<Field>Value</Field
</ObjectClass>
</APIRequest>
मैं एक वर्ग है (objectClass) XMLSerialization के साथ सजाया इस तरह जिम्मेदार बताते हैं:
[XmlRoot("ObjectClass")]
public class ObjectClass
{
[XmlElement("Field")]
public string Field { get; set; }
}
और मेरा वास्तव में हैकी सहज विचार यह सोचने के लिए सोचा गया है कि जब मैं धारावाहिक करता हूं:
ObjectClass inst = new ObjectClass();
XmlSerializer serializer = new XmlSerializer(inst.GetType(), "");
StringWriter w = new StringWriter();
w.WriteLine(@"<?xml version=""1.0""?>");
w.WriteLine("<!DOCTYPE APIRequest SYSTEM");
w.WriteLine(@"""https://url"">");
w.WriteLine("<APIRequest>");
w.WriteLine("<Head>");
w.WriteLine(@"<Field>Value</Field>");
w.WriteLine(@"</Head>");
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
serializer.Serialize(w, inst, ns);
w.WriteLine("</APIRequest>");
बहरहाल, यह इस तरह एक्सएमएल उत्पन्न करता है:
<?xml version="1.0"?>
<!DOCTYPE APIRequest SYSTEM
"https://url">
<APIRequest>
<Head>
<Key>123</Key>
</Head>
<?xml version="1.0" encoding="utf-16"?>
<ObjectClass>
<Field>Value</Field>
</ObjectClass>
</APIRequest>
अर्थात serialize बयान स्वचालित रूप से एक < एक्सएमएल पाठ घोषणा जोड़ रहा है?।
मुझे पता है कि मैं इस गलत पर हमला कर रहा हूं तो क्या कोई मुझे सही दिशा में इंगित कर सकता है?
एक नोट के रूप में, मुझे नहीं लगता कि यह केवल एक ऑब्जेक्ट क्लास के साथ एक एपीआईआरक्वेट क्लास बनाने के लिए व्यावहारिक समझ देगा (क्योंकि ऑब्जेक्ट क्लास के 20 अलग-अलग प्रकार कहते हैं जिन्हें प्रत्येक को उनके आसपास इस बॉयलरप्लेट की आवश्यकता होती है) लेकिन मुझे सही करें अगर मैं गलत हूँ।
स्वचालित रूप से शामिल है? आप घोषणा को मैन्युअल रूप से जोड़ रहे हैं: w.WriteLine (@ " Xml संस्करण =" "1.0" "?>"); – Cerebrus
@ सेरेब्रस, वह टैग के अंदर आंतरिक नहीं चाहता है। –
sisve
हाँ, यह इसे साफ़ करने के लिए धन्यवाद है :-) –