Witam,
W ramach ćwiczenia z C# przerabiam z wyprzedzeniem laboratoria i natknąłem się na problem, którego rozwiązania nie mogę znaleźć nawet na stacku. Jedyne pasujące wyniki jakie znalazłem dotyczyły root node, co mi nie pomaga i czego nie umiałem przełożyć na swój problem.
Moje zadanie to:
"Załadować dokument CarsCollection.xml, a następnie przeprowadzić na nim modyfikację w taki
sposób, aby
a) zmienić nazwę elementu horsePower na hp (0.5 pkt)
b) zamiast elementu year utworzyć atrybut o tej samej nazwie w elemencie model (0.5 pkt)"
CarsCollection.xml => http://ideone.com/7sdLfC
Podpunkt a) udało mi się zrobić po przewertowaniu stacka:
private void button6_Click(object sender, EventArgs e)
{
// podpunkt A
XDocument input = XDocument.Load(Environment.CurrentDirectory + @"\CarsCollection.xml");
input.Descendants("horsePower").ToList().ForEach(s => s.Name = "hp");
input.Save(Environment.CurrentDirectory + @"\CarsCollection2.xml");
webBrowser1.Navigate(Environment.CurrentDirectory + @"\CarsCollection2.xml");
}
Co do podpunktu b) to szukałem długo i nie mogę znaleźć nic co nie korzystało by z XSLT, ale jako że w treści laboratorium nie było o nim wspomniane to zastanawiam się czy jest jakiś sposób aby zrobić to bez XSLT? Tak jak pierwszy podpunkt? XSLT wydaje mi się być mało wygodnym rozwiązaniem. Kod na zmianę jednego elementu jest równie długi jak nie dłuższy od samej zawartości pliku .xml.
W skrócie: czy da się to zrobić, w jakiś szybszy lub po prostu inny sposób, niż korzystając z XSLT?