C#使用模式从XML文件读取

时间:2018-05-10 14:34:18

标签: c# linq-to-xml

我有一个XML文件

<?xml version="1.0" encoding="utf-8" ?>
 <SaleGroupsFiles>
  <SaleGroup id="1" active="true" name="US"> 
   <files
      location="c:\mypath\"
      fileType="pdf"
      destination1="outputpath1">
      destination2="outputpath2">
    </files>
  </SaleGroup>

  <SaleGroup id="2" active="true" name="Canada"> 
  <files
      location="c:\mypath\"
      fileType="pdf"
      destination1="outputpath1">
      destination2="outputpath2">
      destination3="outputpath3">
    </files>
  </SaleGroup>
</SaleGroupFiles>

请注意,可能存在可变数量的目的地。其余的是固定的。 我试图使用XDocument

一次性读取数据
public class SaleGroup
{
    public int Id { get; set; }
    public bool Active { get; set; }
    public string Name { get; set; }
    public SaleFile File { get; set; }
}

public class SaleFile
{
    public string Location { get; set; }
    public string FileType { get; set; }
    public string[] Destination { get; set; }
}

static List<string> GetSettings(string path)
{
    var document = XDocument.Load(path);
    var root = document.Root;
    var results =
        root
        .Descendants("SaleGroup")
        .Select(element => new SaleGroup()
        {
            Active = Convert.ToBoolean(element.Attribute("active").Value),
            Id = Convert.ToInt32(element.Attribute("id").Value),
            Name = element.Attribute("name").Value,
            File = new SaleFile()
            {
                FileType = element.Descendants("files").Single().Attribute("fileType").Value,
                Location = element.Descendants("files").Single().Attribute("location").Value
            }
        })
        .ToList();

它会读取除目的地以外的所有内容。有没有办法将所有目的地(destination1,destination2 ...)加载到数组或List中(使用Like或regex或其他东西)?或者我需要放弃这种方法并只读取循环中的所有值?

0 个答案:

没有答案