【发布时间】:2014-04-29 09:47:59
【问题描述】:
我正在尝试使用 linq 从 XML 文件中获取数据,并将它们转换为对象。
但是我的 XML 文件中的一些数据是这样的:
<XMLFILE>
<Machines>
<Alias name="MACHINE_AAA_1" />
<Alias name="MACHINE_AAA_2" />
<Alias name="MACHINE_AAA_3" />
<Alias name="MACHINE_BBB_1" />
<Alias name="MACHINE_BBB_2" />
<Alias name="MACHINE_BBB_3" />
<Alias name="MACHINE_CCC_1" />
<Alias name="MACHINE_CCC_2" />
<Alias name="MACHINE_DDD_1" />
</Machines>
</XMLFILE>
我要做的是创建机器AAA,BBB,CCC和DDD。
目前,我的代码是:
Data DataMachines= new Data
{
Machines = (from _alias in XEle.Elements("Machines").Elements("Alias")
where _alias.Attribute("name").Valeur.Contains("MACHINE_")
select new Machine
{
Name=(string)_alias.Attribute("name").Value
}).ToList()
};
使用这种方法,我的 XML 文件中将拥有与“别名”一样多的“机器”。
有没有办法根据第二个“_”之前的字符创建对象“Machine”的单个实例?
这段代码的目的是创建: 具有通道 1、2、3 的实例“Machine_AAA”, 具有通道 1、2、3 的实例“Machine_BBB”, 具有通道 1,2 的实例“Machine_CCC”, 具有通道 1 的实例“Machine_DDD”。
如果不清楚,我很抱歉,英语是我的第二语言,C# 是我的第三语言。
感谢您的回答。
【问题讨论】:
-
您是否可以控制正在读取的 xml 文件?
-
我无法更改 xml 文件。 :(
标签: c# linq xml-parsing linq-to-objects