Articoli con tag xml
Linq to Xml – gestione news (part 2)
1Continuando quanto cominciato con la prima parte di questo tutorial implemento le altre due funzionalità fondamentali, ovvero la cancellazione e l’aggiornamento di una notizia.
Cancellazione
Come per la creazione creiamo un XDocument con li file delle news, poi individuiamo la notizia con l’attributo id corrispondete a quella che vogliamo eliminare e facciamo una Remove(). Non ci resta che salvare il file.
XDocument newsXML = XDocument.Load(Server.MapPath("App_Data\\News.xml")); newsXML.XPathSelectElement("News/Notizia[@Id = '" + idNews + "']").Remove(); newsXML.Save(Server.MapPath("App_Data\\News.xml")); |
Modifica
Per la modifica utilizziamo la stessa tecnica usata per la cancellazione con l’unica differenza che non invochiamo la Remove() ma ma aggiorniamo i campi della notizia che intendiamo modificare
XDocument newsXML = XDocument.Load(Server.MapPath("App_Data\\News.xml")); XElement notizia= newsXML.XPathSelectElement("News/Notizia[@Id = '" + _idNews + "']"); notizia.Element("Title").Value = "Nuovo Titolo"; notizia.Element("Text").Value = "Nuovo testo"; notizia.Element("Data").Value = "31/12/2010"; notizia.Element("Evidence").Value = "False"; newsXML.Save(Server.MapPath("App_Data\\News.xml")); |
Linq to Xml – gestione news (part 1)
1Linq è molto semplice da imparare e nel contempo molto potente. Linq dispone di quattro implementazioni: Linq to Sql, Linq to Entities, Linq to DataSets, Linq to Object e Linq to XML. In questo post cercherò di implementare un piccolo sistema di gestione delle news basato su Linq to Xml.
Partiamo dalla nostra sorgente dati, ovvero dal file XML. Esso è composto dal primo elemento “News” all’interno del quale sono contenute tutte le “Notizia”. Ogni notizia possiede un attributo identificativo “Id” che corrisponde alla data trasformata in stringa secondo la convenzione yyyyMMddhhmmss. Le notizie inoltre possiedono l’elemento “Data” che rappresenta la data dell’evento per cui è stata creata la news e un elemento “Evidence” per identificare le news più importanti.
<?xml version="1.0" encoding="utf-8"?> <News> <Notizia Id="20100707102340"> <Title>My first new</Title> <Text>My text,go on antferr.com</Text> <Data>07/07/2010</Data> <Evidence>True</Evidence> </Notizia> <Notizia Id="20100706102340"> <Title>My second new</Title> <Text>Hello readers</Text> <Data>06/07/2010</Data> <Evidence>True</Evidence> </Notizia> </News> |
Fatto ciò non ci resta che creare la web application ASP.NET C#, ipotizzando di inserire il file xml nella directory App_Data e di chiamarlo semplicemente News.xml
Partiamo dal backend, cioè dalla parte amministrativa che deve implementare le funzionalità di inserimento, modifica e cancellazione delle news.
Inserimento
XDocument newsXML = XDocument.Load(Server.MapPath("App_Data\\News.xml")); XElement elemento = newsXML.Element("News"); var notizia = new XElement("Notizia", new XAttribute("Id", news.Id), new XElement("Title", "Il mio titolo"), new XElement("Text", "Il mio testo"), new XElement("Data", "10/07/2010"), new XElement("Evidence", "True") ); elemento.Add(notizia); newsXML.Save(Server.MapPath("App_Data\\News.xml")); |
Per far sì che il codice sopra funzioni correttamente è necessario aggiungere i riferimenti a System.Xml.Linq e System.Xml.XPath. Il funzionamento è molto semplice. Creiamo un oggetto di tipo XDocument all’interno del quale carichiamo il contenuto del nostro file xml, poi creiamo un oggetto di tipo XElement che conterrà il contenuto del tag