我创建了一个看起来像这样的类模型。如何使用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更简单或数据合约串行器。他们最好能够做的就是包装使用序列化器。 –