我有一个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或其他东西)?或者我需要放弃这种方法并只读取循环中的所有值?