Změna nody v XML pomocí jeho id – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Změna nody v XML pomocí jeho id – .NET – Fórum – Programujte.comZměna nody v XML pomocí jeho id – .NET – Fórum – Programujte.com

 

JiriVavru0
Návštěvník
26. 5. 2009   #1
-
0
-

Zdravím,
mám jeden dotaz v XML dokmentu mám jednotlivé nody rozlišené dle jedinečného attributu id a potřeboval bych provádět v jednotlivých úpravy.
Načítám hodnoty do textboxu podle id zvoleného prvku v listview, poté bych chtěl jen provést změny a uložit.
Nevím ale přesně jak toho docílit.
Napadlo me reseni pomoci foreach tzn. neco takovehoto



//Vytvorime novou instanci
XmlDocument xmld = new XmlDocument();

//Nahrajem
xmld.Load(Application.StartupPath + "\\seznam.xml");

XmlElement root = xmld.DocumentElement;

XmlNodeList nodeList = root.SelectNodes("//zaznam");
foreach (XmlNode node in nodeList)
{
if (node.Attributes["id"].Value == 10.ToString)
{
//A tady znmenit jednotlive polozky, tzn. jejich inner text
}
}


Ale nevim, jestli to je dobry napad.

Diky za kazdou radu.

Nahlásit jako SPAM
IP: 92.62.224.–
JardaJirava0
Stálý člen
26. 5. 2009   #2
-
0
-

Ahoj,

osobně se mi takováto práce s xml nelíbí. xml je vhodné pro uložení, případně ještě lépe pro přenos dat. Nikoliv však už jako čistý zdroj, který je přímo konfrontován s UI.

Nezmiňuješ se, jak složité ono xml je, nabízí se však několik možností, jak se k řešení problému postavit. jedním z nich je i opustit xml a pro ukládání dat použít nějakou jednoduchou embeded databázi, nějaká doporučení padla třeba v tomto tématu
http://forum.builder.cz/read.php?31,3023059,3023059

V případě, že je to xml jednoduché, co se týká struktury a malé do velikosti. Nebál bych se použít serializaci do objektů. Až tyto objekty následně nabindoval na prvky UI a při žádosti o uložení je opět deserializoval.

Pěkný den

Jarda Jirava

Nahlásit jako SPAM
IP: 194.213.35.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
JiriVavru0
Návštěvník
26. 5. 2009   #3
-
0
-

Rozumim,
Take bych osobne vyuzil jinych komponent pro praci s daty. V tomto pripade to ale neni mozne, XML je ma velmi jednoduchou strukturu. Neni problem zapsat, ci smazat odpovidajici node. Ale s editaci si tady lamu hlavu uz 2 hodiny.

Struktura XML vypada nasledovne:

<?xml version="1.0" encoding="UTF-8"?>
<seznam>
<zaznam id="1">
<foto>C:\Data\pokus.jpg</foto>
<jmeno>Jan</jmeno>
<prijmeni>Kanec</prijmeni>
<telefon>720905155</telefon>
<skupina>Skola</skupina>
</zaznam>
</seznam>



Taky je prave potiz s attribuem id. dokazi se dostat na kontretni id a dostat jednotlive polozky na vystup ale nevim jak je jednoduse zase ulozit na misto odkud byly vzaty?

Nahlásit jako SPAM
IP: 92.62.224.–
rybar730
Newbie
27. 5. 2009   #4
-
0
-

Tak taky pozivam XMLko jako takovou mensi databazi tak ti nahodim kousek kodu snad ti to pomuze(pisu to z hlavy tak snad bez chyby). Jinak v podstate jde o to co mas vyse jen pokud vis ID tak ten selekt nad XMLkem udelej primo nez pak prochazet v cyklu. Pak by mel stacit jen obyc Save a on uz bude vedet...



XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(XMLFile);

XmlNode node = xmlDoc.SelectSingleNode("sezna/zaznam[id='" + pozadovaneID + "']");
if(node != null)
{
node["foto"].InnerText = novyZaznam;
node["jmeno"].InnerText = novyZaznam;
...
xmlDoc.Save(XMLFile);
}


jen doplnim ze podobny zpusob asi vyuzijes i s problemem co resis v druhem vlaknu "Nacteni z XML do formu podle attr id", staci predat id pres XPath vybrat spravy uzlik a textboxu jen vlozit textBox.Text = node["element"].InnerText;

Nahlásit jako SPAM
IP: 194.197.79.–
JiriVavru0
Návštěvník
27. 5. 2009   #5
-
0
-

Diky, to je ten princip co jsem hledal..diky

Nahlásit jako SPAM
IP: 92.62.224.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý