C# - C-Sharp

 ( vargadanis | 2006. március 15., szerda - 12:26 )

Hello mindenkinek!
Ahogy láttam még nem volt ilyen topic, itt az ideje, hogy legyen. ^_^ Már egy ideje próbálkozom a C# nyelvel és eddig teccik meg minden, de most elakadtam. Egy XML dokumentumot szeretnék kezelni egy progival. Valamilyen eventre, specko egy listbox egyik elemére kattintva, szeretnék egy GridView-t feltölteni adatokkal. Megy is, csak van egy kis bibi. A nav.Value egy olyan értéket ad vissza, ami az össze hiv tartalmát összeolvasztotta. Hogyan lehet azt külön-külön kezelni?

int i,j;
string filename = "adatok.xml";
XPathDocument doc = new XPathDocument(filename);
XPathNavigator nav = doc.CreateNavigator();
XPathExpression expr = nav.Compile("//hiv[@ref='" + lstbox.Text + "']");
XPathNodeIterator iterator = nav.Select(expr);
i = iterator.Count;
for (j = 0; j < i; j++)
{
grdview.Rows.Add(lstbox.Text,nav.Value);
}

Az XML doksi felépítése:
< ?xml version="1.0" encoding="utf-8" ?>
< doc >
< kulcsszavak >
< szo kulcs="xy" / >
< szo kulcs="zt" / >
< /kulcsszavak >
< hivatkozasok >
< hiv ref="xy" >3 kol vmi< /hiv >
< hiv ref="xy" >megint más< /hiv >
< /hivatkozasok >
< /doc >

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

XPathDocument doc = new XPathDocument("adatok.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathExpression expr = nav.Compile("//hiv[@ref='xy']");
XPathNodeIterator iterator = nav.Select(expr);
while (iterator.MoveNext())
{
    Console.WriteLine(iterator.Current.ToString());
}

---

így (MoveNext & iterator.Current használatával)  
  3 kol vmimegint más
  3 kol vmimegint más
helyett   
  3 kol vmi
  megint más
a kimenet

nagy királyság... köszi! működik

Nem tudnál nekem egy linket küldeni, ahol le van írva, hogy hogyan tudok már létező XML dokumentumba adatokat nodeokat stb-ket létrehozni, beszúri, szóval szimplán a filet írni? Próbálkoztam, de nem találtam használhatót. Vagy örülnék, ha egy egyszerű példát, amin elindulhatok, leírnál ide.

Próbálkozom - próbálkozom, kisebb nagyobb sikerrel, de nem akar összejönni. Az első postomban írt szerkezethez szeretnék hozzáadni egy részt. Így próbálkoztam, mégsem tönrtént semmi változás.

string fn = "adatok.xml";
XmlDocument doc = new XmlDocument();
doc.Load(fn);
XmlElement newElem = doc.CreateElement("szog");
XmlAttribute kulcs = doc.CreateAttribute("kulcs");
kulcs.Value = "tesztelgetek";
newElem.Attributes.Append(kulcs);
doc.Save(fn);

Hi all!

Még mindig az XML-be való írással próbálkozom.

XmlDocument doc = new XmlDocument();
doc.Load("adatok.xml");
XmlElement elm = doc.CreateElement("szo");
XmlText txt = doc.CreateTextNode("érték");
doc.DocumentElement.AppendChild(elm);
doc.DocumentElement.LastChild.AppendChild(txt);
doc.Save("adatok.xml");

Ezzel a root részhez ad hozzá egy érték kinézető nodeot. Hogyan tudom ezt egy másik node alá besorolni?

remélem nem értem félre, ha olyasmit szeretnél, hogy insert után kb így nézzen ki a dolog:

<doc>
  ...
  ...
  <szó érték="salala" stuff="taralala" />
</doc>

akkor a doc.Load és .Save közé pl ezt lehetne spagettikódolni:

XmlElement rootElement = doc.DocumentElement;
XmlNode xmlNode = doc.CreateNode(XmlNodeType.Element, "szó", "");
XmlNode xmlAttribErt = doc.CreateNode(XmlNodeType.Attribute, "érték", "");
XmlNode xmlAttribStuff = doc.CreateNode(XmlNodeType.Attribute, "stuff", "");
xmlAttribErt.Value = "salala";
xmlAttribStuff.Value = "taralala";
xmlNode.Attributes.SetNamedItem(xmlAttribErt);
xmlNode.Attributes.SetNamedItem(xmlAttribStuff);
rootElement.AppendChild(xmlNode);

Közben nekem is sikerült megoldani, kicsit más módszerrel. Majd beküldöm, csak most suliban vagyok. ^_^

Kicsit talán közérdekűbb a dolog.

Szerencsém volt megismerkedni egy SharpDevelop (#Develop) nevű (sajnos csak) Windows-os IDE-vel, ami képes a projektet Mono1, Mono1.1 és Mono2 alá portolni. A Visual Studio 2005-ben készített projektemet 1az1-ben meg tudtam nyitni és Monora optimalizálni. Így linux alatt is futtatható a program. ^_^
http://www.icsharpcode.net/OpenSource/SD/Default.aspx

Dani

Csak megemlitem, hogy ingyen letoltheto a Visual C# Express is (2006 nov.-ig).

Jaja, csak azzal nem fejlesztesz Monora, az tuti...

Lenne itt egy kérdés. Még a régi Pascalos időszakomból rémlik valami olyasmi, hogy tudtam strukturált fileokban adatot tárolni, de semmi közelebbire nem. C#-ban is jó volna ezt megtanulni, de nem találtam használható doksit a neten (tuti, h nem vok elég kitartó). Szerencsére elég egyszerű fileba írni:

TextWriter txw = new StreamWriter(@"c:\test.txt");
txw.WriteLine("Amit csak akarok");
txw.Close();

Majd megnyitni sem volt egy nagy ördöngősség...
Szóval tudtok vmit javasolni, hol tok utánanézni egy kicsit mélyebben a filekezelésnek meg ilyesmi?

System.IO névtér. MSDN-t nézegess, abban minden benne van. Rengeteg példával, leírással.

Hmm.. láma kérdés lesz, lehet:

Van olyan IDE linuxra ami ad kódkiegészítést C#-ra? Nagyon jó lenne, mert baromira hiányzik. Nekem a monodevelop nem nagyon akart adni. Nem vagyok mindig képben az elérhető függvényekkel, sőt van amikor a feldobott lista mondja meg, éppen melyik függvényt használjam. Olyasmi lenne jó mint ami a C# 2005-ben van.

Ja amúgy ingyenes marad a Visual c#2005 express, persze korlátos marad.

monodevelop-ban kulon be kell allitani. Most nem tudom neked megmondani hogy hol, en is google-ben kerestem ra.

Ha esetleg megtalálod a címet dobje egy mailt lécci a hrgy kukkac vipmail pontt hu-ra, vagy linkeld ide be, pls. Sajna pocsék a netem újabban, meg dolgom is van... Thx

Uff... köszi, meglett. Hááát elég tré, de a célnak megfelel. Béta ahogy illik.