ho generato un file XML in questo modo:come aggiungere/inserire nodo condizionale in XML utilizzando LINQ to XML
XElement employees =
new XElement("Work",
new XElement("record",
new XElement("Name", textBox1.Text),
new XElement("Phone", "206-555-0144"),
new XElement("Address",
new XElement("Street1", "123 Main St"),
new XElement("City", "Mercer Island"),
new XElement("State", "WA"),
new XElement("Postal", "68042")
)),
new XElement("record",
new XElement("Name", "22222"),
new XElement("Phone", "353245345"),
new XElement("Address",
new XElement("Street1", "sdfain St"),
new XElement("City", "asdf Island"),
new XElement("State", "QLD"),
new XElement("Postal", "54322")
)),
new XElement("record",
new XElement("Name", "Peter"),
new XElement("Phone", "1234"),
new XElement("Address",
new XElement("Street1", "sd St"),
new XElement("City", "cbr"),
new XElement("State", "act"),
new XElement("Postal", "2600")
)
)
);
tardi desidero aggiungere nuovo nodo bambino di età inferiore genitore nodo "record" sulla base di una condizione (dove name = "peter"), qualcosa del genere:
empFile.Elements().Where(r => (string)r.Element("Name") == "Peter")
.Add(new XElement("record",
new XElement("Mobile", "3253425"),
new XElement("Work", 999999)
));
Come posso ottenere questo?
Nitpick: Invece di '(stringa) r.Element ("Nome")', vorrei suggerire che l'uso di 'r.Element ("Nome") Value' potrebbe essere migliore forma.. – Timwi
@Timwi: non lo farei. Il vantaggio del cast to string è che restituisce un valore nullo invece di esplodere quando viene lanciato da null. Quindi qualsiasi elemento senza un sottoelemento chiamato Nome viene semplicemente ignorato, invece di causare il fallimento del programma. Preferisco quasi sempre utilizzare le conversioni esplicite in LINQ in XML, a meno che l'errore di trovare un elemento/attributo debba essere considerato abbastanza grave da giustificare un'eccezione. –
@Jon Skeet: punto giusto. Ammetto che non ho pensato a null, ma anche se l'avessi fatto, non è ovvio che op_Explicit' lo accetti e non lo faccia. Inoltre, non è ovvio cosa sia 'op_Explicit' se, ad esempio, l'elemento ha dei sottoelementi, mentre la documentazione per la proprietà' Value' è più esplicita (haha, l'ironia) su di essa. – Timwi