Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - XML come semplice database sempre aggiornato?
Forum - C# / VB.NET - XML come semplice database sempre aggiornato?

Avatar
kingjia90 (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/11/2010

Segnala al moderatore
Postato alle 1:51
Domenica, 05/12/2010
1)Ho creato un webbrowser con un traduttore che prende parole chiavi in italiano e le "traduce" in cinese con un semplice replace. Avevo intenzione di tenere sempre aggiornato l'elenco di parole chiavi da cui il programma ricava le informazioni attraverso un xml remoto. Dal xml lo deserializzrei e lo metterei in un datagrid (tabella) e da li' con un loop (in colonna ita / chn) e riga per riga farei i dovuti replace. In termini di prestazioni e di progettazione come vi sembra? Sto usando il XML nel modo sbagliato? C'e' qualcosa di piu' semplice e veloce?

2) Per evitare che ci siano troppe operazioni di replace per nulla, avevo messo un controllo sull'indirizzo url, dove se so che sto guardando il catalogo, non mi fa partire i replace che riguardano i miei dati personali. per es. sotto if url.contains ="/catalogo/padelle" c'e' replace("antiaderente","sdasd") end if. e fuori dalla if avere i replace per esempio di frasi come "benvenuto". Come potrei implementarlo nel xml? un'attributo o un elemento?


3)Poi un altra domanda: c'e' qualcosa di piu' veloce e meno pesante di un replace? il replace teoricamente cerca su tutto il sorgente che e' la sorgente della pagina html. Spesso e volentieri ho solo un elemento o una frase da sostituire/da eliminare.Per migliorare le prestazioni sto usando uno string builder.


Ultima modifica effettuata da kingjia90 il 05/12/2010 alle 1:54
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
1
Down
V
Segnala al moderatore
Postato alle 14:15
Domenica, 05/12/2010
1) XML è usato nel modo giusto, semmai datagrid potrebbe essere "sbagliata". L'utilizzo di un componente grafico e l'iterazione sulle sue proprietà è notevolmente più lento rispetto all'uso di un oggetto in memoria senza interfaccia. Quindi, per quanto possibile, evita di iterare sugli elementi del datagrid, ma utilizza semplicemente un dizionario generics.

2) Attributo direi.

3) Come fai a sapere che c'è una sola occorrenza se non controlli tutta la stringa? Non puoi farne a meno. Tuttavia puoi evitare di ricontrollare tutto tante volte quante sono le parole, vedendo se una singola sottostringa compare nel dizionario: questo approccio è adottabile se rimpiazzi delle singole parole e non dei sintagmi completi.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2764
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 1:54
Domenica, 05/12/2010

inquadra meglio il problema spiegando tutti i dettagli dell'applicazione, perchè così è tutto molto fumoso.


Ingegnere Informatico
https://ldlagency.it
PM
Avatar
kingjia90 (Normal User)
Newbie


Messaggi: 6
Iscritto: 15/11/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 2:04
Domenica, 05/12/2010
Allora, il webbrowser naviga su un sito, appena e' completato, viene avviato un modulo che modifica il sorgente del sito caricato, cambiando cosi' il modo con cui viene visualizzato. Questo modulo esegue:
        Src = Form1.Web1.Document.DocumentElement.InnerHtml
        Dim BuilderStr As New System.Text.StringBuilder(Src)
        BuilderStr = BuilderStr.Replace("Ciao", "Ciaociao")
....
        Form1.Web1.Document.DocumentElement.InnerHtml = BuilderStr
___________________________________________
Io volevo che questo "Ciao" e questo "Ciaociao" potessero essere cambiati anche fuori dal modulo, ovvero posso aggiornarlo senza dover ricompilare il programma. Nel senso che  invece di fare
BuilderStr = BuilderStr.Replace("Ciao", "Ciaociao")
fo BuilderStr = BuilderStr.Replace(datagrid.riga1.colonna1, datagrid.riga1.colonna2) da un datagridview. Questo datagridview viene riempito da dati derivati da uno xml remoto
- <traduzione>
  <parola ita="ciao" chn="Ciaociao" />
  </traduzione>

Spero di essermi spiegato meglio :yup: ammetto che e' un po' fumoso.

PM