我創建了一個看起來像這樣的類模型。如何使用c#從xml獲取強類型對象?
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; }
}
然後,使用一個控制檯應用程序,我生成一個XML文件,看起來像這樣:我用
<?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>
代碼:
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");
}
我只是這樣做是爲了知道該怎麼在我的應用程序中,xml看起來像用戶(開發人員),會爲應用程序提供一個xml文件,然後我想將其轉換爲強類型對象:SiteDefinition
我怎樣才能以較少的努力(線)實現這一目標?
private void HandleAppInstalled(SPRemoteEventProperties properties)
{
using (ClientContext cc = TokenHelper.CreateAppEventClientContext(properties, false))
{
if (cc != null)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"/SiteDefinitions/SiteDefinition.xml");
}
}
}
你已經_have_類定義,只是需要反序列化,或者是你希望_generate_一個從XML? –
請參閱['XmlSerializer'](http://msdn.microsoft.com/zh-cn/library/system.xml.serialization.xmlserializer.aspx) –
您不會比使用XML Serializer更簡單或數據合約串行器。他們最好能夠做的就是包裝使用序列化器。 –