praegune kellaaeg 19.06.2025 00:39:29
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Absona
Lõuapoolik

liitunud: 17.09.2008
|
21.12.2008 19:36:37
C#'i & XML'i elementide up&down |
|
|
Probleem selles, et tahaks elemente (node'deks nimetatakse tegelikult neid vist) ülesse ja alla liigutada XML'i failis. Keeleks kasutan C#.
xml:
|
<Maa> <Euroopa> <id>1</id> <Riik>Eesti</Riik> <Pealinn>Tallinn</Pealinn> </Euroopa> <Euroopa> <id>2</id> <Riik>Läti</Riik> <Pealinn>Riia</Pealinn> </Euroopa> <Euroopa> <id>3</id> <Riik>Prantsusmaa</Riik> <Pealinn>Pariis</Pealinn> </Euroopa> </Maa>
|
Kuidas ma saaksin näiteks <Euroopa> koos sisuga üles-alla liigutada C# keele abil. Näiteks niimoodi:
xml:
|
<Maa> <Euroopa> <id>1</id> <Riik>Eesti</Riik> <Pealinn>Tallinn</Pealinn> </Euroopa> <Euroopa> <id>2</id> <Riik>Prantsusmaa</Riik> <Pealinn>Pariis</Pealinn> </Euroopa> <Euroopa> <id>3</id> <Riik>Läti</Riik> <Pealinn>Riia</Pealinn> </Euroopa> </Maa>
|
Täpsemini seletatud iga nupu click tõstab/langetab ühte elementi ühe võrra mis on näiteks kusagil listbox'ist valitud. Listbox'i laetakse andmeid XML'ist.
Proovisin kasutada XmlDocument() ja näiteks PreviousSibling aga midagi ei tule välja. Olen netist otsinud aga ei leia korralike näiteid ja pole varem nende elementide tõstmise/langetamistega kokku puutunud. Oskab keegi ehk aidata.
_________________ Veebilehed, veebiprogrammeerimine, veebilahendused
Erinevad rakendused ja skriptid. |
|
Kommentaarid: 11 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
andresv
HV kasutaja
liitunud: 06.12.2004
|
22.12.2008 11:49:16
|
|
|
insertBefore, insertAfter ja removeChild meetoditega peaks saama selle tehtud.
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
reneSharp
HV kasutaja

liitunud: 13.11.2005
|
23.12.2008 16:04:42
|
|
|
Eelistaksin ise otse xmliga mitte mässata.
Pigem muundada xml klassistruktuuri ,kus on elemente palju lihtsam liigutada nii nagu vaja.
näiteks umbes nii:
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace ConsoleApplication4
{
class Program
{
private static string xml =
@"<Maa>
<Euroopa>
<id>1</id>
<Riik>Eesti</Riik>
<Pealinn>Tallinn</Pealinn>
</Euroopa>
<Euroopa>
<id>2</id>
<Riik>Läti</Riik>
<Pealinn>Riia</Pealinn>
</Euroopa>
<Euroopa>
<id>3</id>
<Riik>Prantsusmaa</Riik>
<Pealinn>Pariis</Pealinn>
</Euroopa>
</Maa>";
static void Main(string[] args)
{
var maaserializer = new XmlSerializer(typeof (Maa));
var maa = (Maa)maaserializer.Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(xml)));
Console.WriteLine("Algne");
maa.ForEach(item => Console.WriteLine(item.id+" "+item.Riik));
maa =MoveFirstToLast(maa);
Console.WriteLine("Peale liigutamist");
maa.ForEach(item => Console.WriteLine(item.id + " " + item.Riik));
//tagasi xmli
var outStream = new MemoryStream();
maaserializer.Serialize(outStream,maa);
outStream.Position = 0;
Console.WriteLine(new StreamReader(outStream).ReadToEnd());
//output peaks olema selline
/*
Algne
1 Eesti
2 Läti
3 Prantsusmaa
Peale liigutamist
1 Läti
2 Prantsusmaa
3 Eesti
<?xml version="1.0"?>
<Maa xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www
.w3.org/2001/XMLSchema">
<Euroopa>
<id>1</id>
<Riik>Läti</Riik>
<Pealinn>Riia</Pealinn>
</Euroopa>
<Euroopa>
<id>2</id>
<Riik>Prantsusmaa</Riik>
<Pealinn>Pariis</Pealinn>
</Euroopa>
<Euroopa>
<id>3</id>
<Riik>Eesti</Riik>
<Pealinn>Tallinn</Pealinn>
</Euroopa>
</Maa>
*/
}
private static Maa MoveFirstToLast(Maa inCollection)
{
var riigid = new LinkedList<EuroopaRiik>(inCollection);
riigid.AddLast(riigid.First.Value);
riigid.RemoveFirst();
return ReassignIdentities(new Maa(riigid.ToArray()));
}
private static Maa ReassignIdentities(Maa maa)
{
for (int i = 0; i < maa.Count; i++)
maa[i].id = i+1;
return maa;
}
}
[XmlType(TypeName = "Maa")]
public class Maa : List<EuroopaRiik>
{
public Maa(){}
public Maa(IEnumerable<EuroopaRiik> collection):base(collection){}
}
[XmlType(TypeName = "Euroopa")]
public class EuroopaRiik
{
public int id { get; set; }
public string Riik { get; set; }
public string Pealinn { get; set; }
}
}
|
|
|
Kommentaarid: 25 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
25 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|