Zupp fellas.
Min kund har följande Xml-dokument (mycket mycket större, visar endast behövlig mängd):
Kod:
<root>
<y2009>
<m2>
<t>
<d>25</d>
<v1>269,27</v1>
<v2>231,57</v2>
<v3>226,63</v3>
</t>
<t>
<d>26</d>
<v1>267,38</v1>
<v2>232,50</v2>
<v3>231,57</v3>
</t>
</m2>
<y2009>
Jag vet att filen har väldigt dålig struktur, och man hade kunnat göra allt mycket enklare. Men nu är det som det är och kunden tillåter inga ändringar i strukturen (tydligen en massa flash-filer som hämtar data från denna fil).
<y2009> = Året då "posten" läggs till.
<m2> = Månaden då "posten" läggs till, m2 = februari.
<t> = Ingen aning, antagligen nån sorts wrapper.
<d> = Dagen då "posten" läggs till.
<v1>, <v2>, <v3> = Värden för dagen då "posten" läggs till.
Det kunden vill kunna göra är att via ett formulär, lägga till fler värden vid dagens datum. Värdena måste komma i följd, finns endast ett värde vid en dag, d.v.s. <v1>, så ska den skapa <v2> and so forth.
Jag har inte kommit långt själv. Jag har lyckats penetrera dokumentet och hamnat inne i rätt månad (<m
x>). Men då kommer ju en massa <t>, det jag måste göra är att på nåt sätt iterera genom dessa för att hitta dagens datum inne i <d>, och därefter, på nåt sätt, kolla hur många värden det finns; och lägga till värdet man postar i formuläret i rätt ordning.
Ni har antagligen följdfrågor, så skicka de till mig i ett kuvert så uppdaterar jag huvudtråden därefter ;-)
My present code:
Kod:
XDocument document = XDocument.Load(Server.MapPath("~/termPrice.xml"));
String todaysYear = "y" + DateTime.Now.Year.ToString();
String todaysMonth = "m" + DateTime.Now.Month.ToString();
var todaysDay = DateTime.Now.ToString("dd");
var items = from doc in document.Descendants(todaysYear)
let month = (string)doc.Element(todaysMonth)
// Här uppstår ju <t>-elementet.
where doc.Element("d").Value == todaysDay
select doc;
foreach (XElement element in items) {
Response.Write(element.ToString());
}
Have a nice weekend!