![](/img/trans.png)
[英]how to assign values from an object member which is a list array to another object member
[英]Assigning each member of an object array with values from an xml file
我有一個程序,其中變量week由對象array [7] days組成,而days由對象array [9] hours組成。 每個小時對象有3個數據成員。 我想從xml文件中為特定日期和時間的每個成員分配特定值:
<parent>
<day>wednesday
<hour>18.00
<value1>5</value1>
<value2>10</value2>
<value3>15</value3>
</hour>
</day>
<day>thursday
<hour>18.00
<value1>2</value1>
<value2>3</value2>
<value3>9</value3>
</hour>
</day>
</parent>
day[wedensday].hour[18.00].member1 = xml.day[wednesday].hour[18.00].value1
day[wedensday].hour[18.00].member1 = xml.day[wednesday].hour[18.00].value2
day[wedensday].hour[18.00].member1 = xml.day[wednesday].hour[18.00].value3
我剛接觸xml,並想出了以下偽代碼,但很難實現它:
member[i] = value[i] where day[i].name == xml.day && day[i].hour[i] == xml.hour
如果有人可以指導我或將我定向到可以幫助解決此問題的資源,將不勝感激,謝謝:)
您可以使用Linq將xml解析為xml:
XDocument xdoc = XDocument.Load(path_to_xml_file);
var week = new
{
Days = xdoc.Descendants("day")
.Select(day => new {
Name = ((XText)day.FirstNode).Value.Trim(),
Hours = day.Descendants("hour")
.Select(hour => new {
Time = ((XText)hour.FirstNode).Value.Trim(),
Values = hour.Elements()
.Select(node => (int)node)
.ToList()
}).ToList()
}).ToList()
};
周將是強類型的匿名對象。 用法:
var daysCount = week.Days.Count; // 2
var secondDayName = week.Days[1].Name; // thursday
var hoursInSecondDay = week.Days[1].Hours.Count; // 1
var timeOfFirstHour = week.Days[1].Hours[0].Time; // 18:00
var value3 = week.Days[1].Hours[0].Values[2]; // 9
說明:
xdoc.Descendants("day")
返回所有<day>
節點。 但是我們不需要xml節點,因此我們通過選擇表示天的匿名對象來進行投影。 該對象具有兩個屬性Name
和Hours
。 我們從<day>
元素的第一個節點獲得的名稱,即文本節點(第一天為“星期三”)。 通過選擇<hour>
<day>
<hour>
元素並投影到表示小時的匿名對象來獲得小時。 等等。
如果將日期名稱和小時值移動到這樣的屬性中:
<parent>
<day name="wednesday">
<hour time="18.00">
<value1>5</value1>
<value2>10</value2>
<value3>15</value3>
</hour>
</day>
</parent>
然后解析將如下所示:
XDocument xdoc = XDocument.Load(path_to_xml_file);
var week = new
{
Days = xdoc.Descendants("day")
.Select(day => new {
Name = (string)day.Attribute("name"),
Hours = day.Descendants("hour")
.Select(hour => new {
Time = (string)hour.Attribute("time"),
Values = hour.Elements()
.Select(node => (int)node)
.ToList()
}).ToList()
}).ToList()
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.