我正在寻找有关如何最好地解决我的问题的建议。
我有一个Web应用程序,它将利用数据库和XML文件作为其数据源。
更新数据库没有问题,处理XML文件是。
首先要了解网络应用程序是当前(和糟糕的生产系统)的旁路。所以那里没有灵活性。
因此,在XML文件的情况下,如果用户添加/更新/删除字段,则需要执行以下步骤。
对我有利的唯一好处是我在一定时间内没有多少用户使用此应用。
答案 0 :(得分:0)
我强烈建议您查看DataContractSerializer
以了解序列化需求。您的对象必须遵循与XML相同的格式,但没有理由不能将这些对象作为模型。下面是一个标记POCO以自动与XML串行化的示例:
[DataContract]
public class Account
{
[DataMember, XmlAttribute]
public string Name { get; set; }
[DataMember]
public double Balance { get; set; }
}
然后你使用这样的序列化代码:
string serializedAccount = null;
XmlSerializer serializer = new XmlSerializer(typeof(Account));
using(StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, myAccountObject);
serializedAccount = writer.ToString();
}
// serializedAccount should look something like this:
//
// <Account Name="MyName">
// <Balance>100</Balance>
// </Account>
//
// Each of the DataMember and DataContract attributes allow you to override
// names so that you can make them lower case, or provide a more meaningful
// name in your POCO.
Account deserializedAccount = null;
using(StringReader reader = new StringReader(serializedAccount))
{
deserializedAccount = serializer.DeSerialize(reader) as Account;
}
要记住几件事:
[IgnoreDataMember]
属性。即使只是出于文档目的,它也很方便。INotifyPropertyChanged
,因此所有属性都可以绑定(对于WPF很方便)注意:如果您的服务器实现了正确的SOAP Web API,那么WCF可以获取WSDL并生成对API的绑定以及需要序列化的对象。如果它是REST API,还需要做更多的工作,但也支持它。