У меня есть XML следующим образом.
<AFConfig>
<Geographies>
<Geography id="Place1" description="NicePlace">
<MetaData>
<Services>
<Service>
...
...
</Service>
</Services>
</MetaData>
<Systems>
<DefaultSystem systemName="SYSONE" server=http"//192.168.0.0" />
</Systems>
</Geography>
<Geographies>
</AFConfig>
Вот что я хочу сделать.
- Клонировать элемент Geography и добавить его как родственный элемент (т. Е. Child to Geographies)
- Обновить "id", "description" новыми значениями AND
- обновите имя системы с новым значением
Мой код.
XDocument xd_Document = XDocument.Load(s_FileName);
XElement xe_Element = (from xe in xd_Document.XPathSelectElements(s_Element)
where xe.Attribute(s_IdAttr).Value == s_Value
select xe).SingleOrDefault();
XElement xe_NewElement = CloneElement(xe_Element)
foreach(KeyValuePair<string, string> s in d_AttrValue)
xe_NewElement.Attribute(s.Key).Value = d_AttrValue[s.Key];
xe_Element.Parent.Add(xe_NewElement);
xd_Document.Save(s_destFileName);
Я передаю этому методу следующую строку параметров s_FileName, строку s_destFileName, строку s_Element, строку s_IdAttr, строку s_Value, словарь d_AttrValue
С помощью этого кода я могу изменитьатрибуты id и description.
Вопрос: Как я могу изменить атрибут systemName DefaultSystem со значением?
Примечание: у меня есть тот же код для модификации существующего элемента без создания нового элемента.Опять сталкиваюсь с той же проблемой.Универсальное решение будет предпочтительным.