public static void Main()
var xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<PublicTalk Number=""47"" Excluded=""true"" ExcludedFromDate=""2019-04-01"" ExcludedNote=""S-147 19.03"" />
xml = SetOutlineInfo(xml, 1, "eng", true, DateTime.Parse("2023-09-12"), "1");
public static string SetOutlineInfo(string talksdatabase, int talknumber, string languageCode, bool talkExcluded, DateTime dateExcudedFrom, string excludedNote)
XDocument doc = XDocument.Parse(talksdatabase);
var ptLang = doc.Element("PublicTalkTitles").Element(languageCode);
var pt = ptLang.Elements("PublicTalk");
.Where(p => int.Parse(p.Attribute("Number").Value) <= talknumber)
.MaxBy(p => int.Parse(p.Attribute("Number").Value));
if (int.Parse(ptInfo?.Attribute("Number").Value ?? "0") == talknumber)
ptInfo.Attribute("Excluded").Value = talkExcluded ? "true" : "false";
ptInfo.Attribute("ExcludedFromDate").Value = dateExcudedFrom.ToString("yyyy-MM-dd");
ptInfo.Attribute("ExcludedNote").Value = excludedNote;
var newElem = new XElement("PublicTalk",
new XAttribute("Number", talknumber),
new XAttribute("Excluded", talkExcluded),
new XAttribute("ExcludedFromDate", dateExcudedFrom.ToString("yyyy-MM-dd")),
new XAttribute("ExcludedNote", excludedNote)
ptInfo.AddAfterSelf(newElem);
ptLang.AddFirst(newElem);