Je suis en train de générer XML comme ceci:XML .NET sérialisation sans déclaration <?xml> texte
<?xml version="1.0"?>
<!DOCTYPE APIRequest SYSTEM
"https://url">
<APIRequest>
<Head>
<Key>123</Key>
</Head>
<ObjectClass>
<Field>Value</Field
</ObjectClass>
</APIRequest>
J'ai décoré avec XmlSerialization attributs comme cette classe (ObjectClass):
[XmlRoot("ObjectClass")]
public class ObjectClass
{
[XmlElement("Field")]
public string Field { get; set; }
}
Et ma pensée intuitive vraiment hacky juste pour obtenir ce travail est de le faire quand je sérialiser:
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>");
Cependant, cela génère XML comme ceci:
<?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>
à savoir la déclaration de serialize ajoute automatiquement une déclaration de texte <? Xml.
Je sais que j'attaque ce problème alors quelqu'un peut-il me diriger dans la bonne direction? En guise de note, je ne pense pas qu'il soit judicieux de créer une classe APIRequest avec une classe ObjectClass (parce qu'il y a 20 types différents d'ObjectClass qui ont besoin de cette classe), mais corrigez-moi si j'ai tort.
Automatiquement? Vous semblez ajouter la déclaration manuellement: w.WriteLine (@ " Xml version =" "1.0" "?>") ;. – Cerebrus
@Cerebrus, il ne veut pas l'intérieur à l'intérieur de la balise. –
sisve
Ouais c'est ça merci pour avoir éclairci ça :-) –