我有一个小问题,我不知道如何导入我的程序读取的xml文档,然后验证字符串(true / false),如果是真的保存它们。该程序由程序类,paymentImporter类和接口类组成。我知道我只需要更改paymentImporter类来实现这一点。代码如下:
paymentImporter类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WsPreInterviewTest
{
public class XmlPaymentImporter : IPaymentImporter
{
public XmlPaymentImporter(IDatabaseProvider service_provider)
{
//import file
throw new NotImplementedException();
}
public bool ReadFile(string file_path, List<string> errs)
{
//read file for validation
throw new NotImplementedException();
}
public bool SaveAll()
{
//save if validation ok
throw new NotImplementedException();
}
}
}
Interface Class:
public class Person
{
public int Recno { get; set; }
public string Name {get;set;}
}
public class Payment
{
public int PersonRecno { get; set; }
public string Currency { get; set; }
public decimal Amount { get; set; }
public string Narrative { get; set; }
}
interface IPaymentImporter
{
bool ReadFile(string file_path, List<string> errs);
bool SaveAll();
}
public interface IDatabaseProvider
{
DatabaseRepository GetDataRepository();
}
public abstract class DatabaseRepository
{
public DatabaseRepository()
{
}
/// <summary>
/// returns null if person is not known
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public abstract Person FindPerson(string name);
public abstract bool SavePayment(Payment payment);
}
}
程序类:
class Program
{
static void Main(string[] args)
{
IDatabaseProvider _service_provider = null;
string example_file = "ExampleFile.xml";
XmlPaymentImporter importer = new XmlPaymentImporter(_service_provider);
List<string> errors = new List<string>();
if (importer.ReadFile(example_file, errors))
{
if (!importer.SaveAll())
Console.WriteLine("Problem saving records");
}
else
{
Console.WriteLine("Problem With File");
foreach (string s in errors)
Console.WriteLine(s);
}
答案 0 :(得分:0)
使用Person
和相应的xml类型装饰器装饰您的Payment
和[Serializable()]
类。然后只需将xml文档反序列化为这些类并捕获异常。 How to Deserialize XML document
我看到的唯一问题是Person
课程中没有Payment
字段。您尚未提供要反序列化的xml,但如果您将person元素作为付款子级,则具有相同的类结构将使您更容易。您可以调用Deserialize()并获取完整的数据结构。