Вам необходимо явно указать пространство имен для элемента thesaurus
, так как оно отличается от пространства имен для корневого XML
узла:
XNamespace ns = "x-schema:tsSchema.xml";
XDocument doc = XDocument.Load("tseng.xml");
IEnumerable<XElement> MemberList = doc.Element("XML").Elements(ns + "thesaurus");
Кроме того, имейте в виду, что ваш текущий код добавит новый expansion
элемент после thesaurus
один, а не его дочерние элементы.Если вы хотите добавить новый элемент expansion
к последнему элементу thesaurus
, используйте вместо этого следующий код:
var MemberList = root.Elements(ns + "thesaurus");
var Member = new XElement(ns + "expansion",
new XElement(ns + "sub", "home"),
new XElement(ns + "sub", "house")
);
MemberList.Last().Add(Member);
Это приведет к XML, аналогичному приведенному ниже примеру:
<XML ID="Microsoft Search Thesaurus">
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<!-- elided: new element goes here -->
<expansion>
<sub>home</sub>
<sub>house</sub>
</expansion>
</thesaurus>
</XML>