Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
C# xml.... come scrivere senza cancellare i dati già inseriti?
giovedì 23 febbraio 2006 - 18.21
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
88mav
Profilo
| Newbie
31
messaggi | Data Invio:
gio 23 feb 2006 - 18:21
come posso scrivere su un file xml già scritto?
voglion aggiungere ad un xml già scritto dei dati nuovi senza cancellare quelli precedenti...
come posso fare?
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 23 feb 2006 - 23:46
Essendo un file di tipo sequenziale con i records (righe) a lunghezza variabile è impossibile riscriverne porzioni, devi prima leggerlo tutto e poi riscriverlo tutto.
88mav
Profilo
| Newbie
31
messaggi | Data Invio:
ven 24 feb 2006 - 09:41
puoi farmi un esempio per come devo fare?
io per ora ho letto tutte le righe del mio xml e le ho inserite in un array list; solo che ora mi sorge il problema di andare a scirvere, perchè non sono più divisi in comment, startelement, elementstring, ecc.........
come faccio?
in partica cmq io ho questo documento xml
<?xml version="1.0" ?>
- <!-- Kmask
-->
- <tasti>
<Testo>Calcolatrice</Testo>
<Percorso>C:\WINDOWS\System32\calc.exe</Percorso>
<Testo>Notepad</Testo>
<Percorso>C:\\WINDOWS\\system32\\notepad.exe</Percorso>
<Testo>Dos</Testo>
<Percorso>C:\\WINDOWS\\system32\\cmd.exe</Percorso>
<Testo>Tastiera</Testo>
<Percorso>C:\\WINDOWS\\system32\\osk.exe</Percorso>
</tasti>
e vorrei aggiungerci sotto questo
<sec_tasti>
<Testo>Calcolatrice</Testo>
<Percorso>C:\WINDOWS\System32\calc.exe</Percorso>
<sec_tasti>
pascual
Profilo
| Newbie
22
messaggi | Data Invio:
ven 24 feb 2006 - 10:12
Credo che forse puoi risolvere qcon qualcosa del genere
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load("path\\file.xml");
System.Xml.XmlElement newNode = doc.CreateElement("sec_tasti");
string xPath = "//tasti";
System.Xml.XmlNode nodo = doc.SelectSingleNode(xPath);
nodo.AppendChild(newNode);
xPath = "//sec_tasti";
System.Xml.XmlNode myNode = doc.SelectSingleNode(xPath);
System.Xml.XmlElement newChild = doc.CreateElement("Testo");
newChild.InnerText = "Calcolatrice";
System.Xml.XmlElement newChild_2 = doc.CreateElement("Percorso");
newChild_2.InnerText = "C:\\WINDOWS\\System32\\calc.exe";
myNode.AppendChild(newChild);
myNode.AppendChild(newChild_2);
doc.Save("path\\file.xml");
Ogni domenica puoi vincere o perdere. La questione e': sei capace di fare entrambe le cose da uomo?
88mav
Profilo
| Newbie
31
messaggi | Data Invio:
ven 24 feb 2006 - 11:02
nella seconda riga di codice mi da un errore dicendo che il token non è valido
88mav
Profilo
| Newbie
31
messaggi | Data Invio:
ven 24 feb 2006 - 11:19
ho corretto avevo sbagliato io adesso va;
invece se volgio rimuovere una parte ????????
tipo da questo
<?xml version="1.0"?>
<!--Kmask-->
<tasti>
<Testo>Calcolatrice</Testo>
<Percorso>C:\WINDOWS\System32\calc.exe</Percorso>
<Testo>Notepad</Testo>
<Percorso>C:\\WINDOWS\\system32\\notepad.exe</Percorso>
<Testo>Dos</Testo>
<Percorso>C:\\WINDOWS\\system32\\cmd.exe</Percorso>
<Testo>Tastiera</Testo>
<Percorso>C:\\WINDOWS\\system32\\osk.exe</Percorso>
</tasti>
voglio togliere :
<Percorso>C:\\WINDOWS\\system32\\notepad.exe</Percorso>
<Testo>Dos</Testo>
come faccio?
88mav
Profilo
| Newbie
31
messaggi | Data Invio:
ven 24 feb 2006 - 11:20
ho corretto avevo sbagliato io adesso va;
invece se volgio rimuovere una parte ????????
tipo da questo
<?xml version="1.0"?>
<!--Kmask-->
<tasti>
<Testo>Calcolatrice</Testo>
<Percorso>C:\WINDOWS\System32\calc.exe</Percorso>
<Testo>Notepad</Testo>
<Percorso>C:\\WINDOWS\\system32\\notepad.exe</Percorso>
<Testo>Dos</Testo>
<Percorso>C:\\WINDOWS\\system32\\cmd.exe</Percorso>
<Testo>Tastiera</Testo>
<Percorso>C:\\WINDOWS\\system32\\osk.exe</Percorso>
</tasti>
voglio togliere :
<Percorso>C:\\WINDOWS\\system32\\notepad.exe</Percorso>
<Testo>Dos</Testo>
come faccio?
88mav
Profilo
| Newbie
31
messaggi | Data Invio:
ven 24 feb 2006 - 11:21
ho corretto avevo sbagliato io adesso va;
invece se volgio rimuovere una parte ????????
tipo da questo
<?xml version="1.0"?>
<!--Kmask-->
<tasti>
<Testo>Calcolatrice</Testo>
<Percorso>C:\WINDOWS\System32\calc.exe</Percorso>
<Testo>Notepad</Testo>
<Percorso>C:\\WINDOWS\\system32\\notepad.exe</Percorso>
<Testo>Dos</Testo>
<Percorso>C:\\WINDOWS\\system32\\cmd.exe</Percorso>
<Testo>Tastiera</Testo>
<Percorso>C:\\WINDOWS\\system32\\osk.exe</Percorso>
</tasti>
voglio togliere :
<Percorso>C:\\WINDOWS\\system32\\notepad.exe</Percorso>
<Testo>Dos</Testo>
come faccio?
pascual
Profilo
| Newbie
22
messaggi | Data Invio:
ven 24 feb 2006 - 11:40
Non è il max nn avendo attributi che identificano il nodo ma dovrebbe andare
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load("path\file.xml");
string xPath = "//Testo";
System.Xml.XmlNodeList lista = doc.SelectNodes(xPath);
foreach(System.Xml.XmlNode nodo in lista)
{
if(nodo.InnerText.Equals("Dos"))
{
nodo.ParentNode.RemoveChild(nodo);
}
}
xPath = "//Percorso";
lista = doc.SelectNodes(xPath);
foreach(System.Xml.XmlNode nodo in lista)
{
if(nodo.InnerText.Equals("C:\\\\WINDOWS\\\\system32\\\\notepad.exe"))
{
nodo.ParentNode.RemoveChild(nodo);
}
}
doc.Save("path\\file.xml");
Dpvrebbe andare bene con un solo cilco esguendo l'xpath con questa query //Testo|Percorso ma nn ne sono sicuro
Ogni domenica puoi vincere o perdere. La questione e': sei capace di fare entrambe le cose da uomo?
88mav
Profilo
| Newbie
31
messaggi | Data Invio:
ven 24 feb 2006 - 11:47
grazie mille pero ho bisogna ancora di una cosa se puoi
ho bisogno che passandogli solo il nome mi tolga anche l'indirizzo.
cioè se gli passo dos, mi toilga oltro che al nome ance il suoi indirizzo
pascual
Profilo
| Newbie
22
messaggi | Data Invio:
ven 24 feb 2006 - 11:57
se hai la sicurezza che il nodo con l'indirizzo sia quello successivo al nodo con il nome allora basta aggiungere
nodo.ParentNode.RemoveChild(nodo.NextSibling);
prima di
nodo.ParentNode.RemoveChild(nodo);
Ogni domenica puoi vincere o perdere. La questione e': sei capace di fare entrambe le cose da uomo?
88mav
Profilo
| Newbie
31
messaggi | Data Invio:
ven 24 feb 2006 - 12:10
io ho scritto questo
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load("DateMask.xml");
string xPath = "//Testo";
System.Xml.XmlNodeList lista = doc.SelectNodes(xPath);
foreach(System.Xml.XmlNode nodo in lista)
{
if(nodo.InnerText.Equals(txtNome.Text))
{
nodo.ParentNode.RemoveChild(nodo);
}
}
xPath = "//Percorso";
lista = doc.SelectNodes(xPath);
foreach(System.Xml.XmlNode nodo in lista)
{
nodo.ParentNode.RemoveChild(nodo.NextSibling);
nodo.ParentNode.RemoveChild(nodo);
}
doc.Save("DateMask.xml");
mi da un errore dopo l'esecuzione su questa riga
nodo.ParentNode.RemoveChild(nodo.NextSibling);
pascual
Profilo
| Newbie
22
messaggi | Data Invio:
ven 24 feb 2006 - 12:18
facendo così devi levare il secondo ciclo perchè elimini tutto nel primo...
la remove del nextsibiling la devi fare nel primo ciclo
Ogni domenica puoi vincere o perdere. La questione e': sei capace di fare entrambe le cose da uomo?
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !