J'ai créé un modèle de classe qui ressemble à ceci.Comment obtenir un objet fortement typé à partir de xml en utilisant C#?
public class SiteDefinition
{
[XmlAttribute()]
public string Name { get; set; }
[XmlAttribute()]
public string Version { get; set; }
public List<MasterPage>? MasterPages { get; set; }
public List<File>? Files { get; set; }
public List<PageLayout>? PageLayouts { get; set; }
public List<Feature>? Features { get; set; }
public List<ContentType>? ContentTypes { get; set; }
public List<StyleSheet>? StyleSheets { get; set; }
}
Puis, en utilisant une application de la console, j'ai produit un fichier xml qui ressemble à ceci:
<?xml version="1.0"?>
<SiteDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="ContosoIntranet" Version="1.0.0.0">
<MasterPages>
<MasterPage Url="" Name="seattle.master" LocalFolder=".\seattle.master" ServerFolder="_catalogs/ContosoIntranet/" UIVersion="15" />
</MasterPages>
</SiteDefinition>
Code I utilisé:
static void Main(string[] args)
{
var siteDefinition = new SiteDefinition();
siteDefinition.Name = "ContosoIntranet";
siteDefinition.Version = "1.0.0.0";
siteDefinition.MasterPages = new List<SiteProvisioningFramework.MasterPage>()
{
new MasterPage(){
Name="seattle.master",
ServerFolder ="_catalogs/ContosoIntranet/",
UIVersion = "15",
Url="",
LocalFolder = ".MasterPages/seattle.master"
}
};
Utilities.XmlHelper.ObjectToXml(siteDefinition, @".\Sample.xml");
}
Je viens de faire que de savoir comment la xml ressemblerait, dans mon application, les utilisateurs (développeurs), donnera à l'application un fichier xml, puis je veux le convertir en un objet fortement typé: SiteDefinition
Comment puis-je réaliser ceci avec le moins d'effort (lignes) possible?
private void HandleAppInstalled(SPRemoteEventProperties properties)
{
using (ClientContext cc = TokenHelper.CreateAppEventClientContext(properties, false))
{
if (cc != null)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"/SiteDefinitions/SiteDefinition.xml");
}
}
}
-vous _obligatoire_ déjà une définition de classe et juste besoin de désérialiser, ou vous cherchez à _generate_ un à partir du XML? –
Voir ['XmlSerializer'] (http://msdn.microsoft.com/fr-fr/library/system.xml.serialization.xmlserializer.aspx) –
Vous n'allez pas simplifier l'utilisation du XML Serializer ou le sérialiseur de contrat de données. Le mieux que vous puissiez faire est d'utiliser un sérialiseur. –