需要使XML生成代码动态化

时间:2015-03-28 07:42:33

标签: c#

代码:

//Takes input as values separated by ///
string csvString = "row11,row12,row13///row21,row22,row23///row31,row32,row33";

// Read into an array of strings.
string[] source = csvString.Split(new string[] { "///" }, StringSplitOptions.None);

//Generate XML based on the ',' and source array.
// Note that dbTemplate here is the comma separated template field values (check below)
XElement cust = new XElement("Root",
                    from str in source
                    let fields = str.Split(',')
                    select new XElement("Client",
                        new XElement(dbTemplate[0], fields[0]),
                        new XElement(dbTemplate[1], fields[1]),
                        new XElement(dbTemplate[2], fields[2])
                        )
                );


string result=cust.ToString();

逻辑: 我在SQL db中有一个包含2列的表:IssueType和模板以及用于根据IssueType获取模板的编写代码。

IssueType      Template
Client    Name,Phone,Address
Claim     Name,Type,Date,HandlerName,SettledDate
Incident  Place,Cost,Name,Date

上面的代码为3个固定的csv值和相应的3个固定的IssueType-> Tempalte值(即:IssueType = Client)生成XML输出。我想使代码动态化(目前它只适用于IssueType = Client,即:有3个模板值)。没有。逗号分隔CSV中的值始终等于来自db的相应IssueType列的逗号分隔值的数量。请指导。

2 个答案:

答案 0 :(得分:0)

我很难跟上这个问题,但我认为你只想将你的select子句更改为:

select new XElement("Client",
    dbTemplate.Zip(fields, (name, value) => new XElement(name, value)))

答案 1 :(得分:0)

我不知道我是否理解得很好,但我认为你可以使用像

这样的东西
        var str = csvString.TrimStart();
        if (str.Split(new string[] { "///" }, StringSplitOptions.None).ToList().Count > 0)
        {
            foreach(var token in str)
            {
                var fields = token.Split(',')
                switch (fields[0])
                {
                    case "Cust":
                    {
                        do something

                    }
                        break;
                    case "Something":
                    {
                        do something
                    }
                    break;
                }
            }
        }
相关问题