我試圖生成這樣的XML:.NET XML序列化
<?xml version="1.0"?>
<!DOCTYPE APIRequest SYSTEM
"https://url">
<APIRequest>
<Head>
<Key>123</Key>
</Head>
<ObjectClass>
<Field>Value</Field
</ObjectClass>
</APIRequest>
我有一個類(對象類)的屬性這樣飾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:
<?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>
即連載語句自動添加一個< XML文本聲明?
我知道我在攻擊這個錯誤,所以有人能指出我正確的方向嗎?作爲一個說明,我認爲只用一個ObjectClass創建一個APIRequest類是不現實的(因爲有20種不同類型的ObjectClass,每個都需要這個樣板),但是糾正我如果我錯了。
自動?你似乎是手動添加聲明:w.WriteLine(@「<?xml version =」「1.0」「?>」);. – Cerebrus 2009-06-01 05:47:54
@Cerebrus,他不希望標籤內部的。 –
sisve
2009-06-01 05:55:16
是的,這是它感謝清除:-) – 2009-06-01 06:05:55