Aggiungere un nodo tramite LINQ TO XML

venerdì 03 giugno 2011 - 13.39
Tag Elenco Tags  C#  |  VB.NET  |  .NET 2.0  |  .NET 3.0  |  .NET 3.5  |  .NET 4.0

frameworknet Profilo | Newbie

Dovrei aggiungere un nuovo nodo <products> tramite LINQ a questo file XML:

<products xmlns="http://schemas.aspitalia.com/book40/products">
<!-- Lista prodotti -->
<product idProduct="1" idCategory="1">
<description>Prodotto 1</description>
</product>
</products>

il codice che ho implementato è il seguente:
XDocument doc = XDocument.Load(Server.MapPath("/test.xml"));

XNamespace productNs = "http://schemas.aspitalia.com/book40/products";
XElement product = new XElement(productNs + "siteMap", new XComment("Nuovo Prodotto"), new XAttribute("idProduct", 4), new XElement(productNs + "description", "Prodotto 4"));

doc.Root.Add(product);

Facendo il DEBUG sulla terza riga si interrompe senza alcun errore...

Brainkiller Profilo | Guru

>Dovrei aggiungere un nuovo nodo <products> tramite LINQ
>a questo file XML:

Immagini parli di nodo <product> perchè il <products> è la root:

XDocument doc = XDocument.Load("C:\\products.xml"); XElement elem=new XElement("product"); elem.Add(new XAttribute("idProduct", "1")); elem.Add(new XAttribute("idCategory", "1")); elem.Add(new XElement("description", "Prodotto2")); doc.Root.Add(elem); doc.Save("C:\\prova.xml");

Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

frameworknet Profilo | Newbie

grazie,
nell'esempio funziona ma non riesco a farlo funzionare con questo xml avendo un nodo aggiuntivo:

<?xml version="1.0" encoding="utf-8"?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
<siteMapNode url="/default.aspx" title="HomePage" description="HomePage">
<siteMapNode url="~/content/chi-siamo/1" title="Chi Siamo" description="Chi Siamo" />
<siteMapNode url="~/content/servizi/2" title="Servizi" description="Servizi">
<siteMapNode url="~/content/consulenza/3" title="Consulenza" description="Consulenza" />
<siteMapNode url="~/content/corsi/4" title="Corsi" description="Corsi" />
<siteMapNode url="~/content/sviluppo/5" title="Sviluppo" description="Sviluppo" />
</siteMapNode>
<siteMapNode url="~/contatti.aspx" title="Contatti" description="Contatti" />
</siteMapNode>
</siteMap>

avrei necessita di inserire un nuovo nodo <siteMapNode> dentro /siteMap/siteMapNode decidendo anche la posizione:
ho provato AddAfterSelf ma non sembra funzionare a dovere:

XElement elem = new XElement("siteMapNode");
elem.Add(new XAttribute("url", "1"));
elem.Add(new XAttribute("title", "1"));

XElement lastNode = elem.Element("siteMapNode");
lastNode.AddAfterSelf(elem);

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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5