2013-02-10 2 views
1

Мой файл XML выглядит следующим образом:Удаление одного узла в XML с помощью C#

<Default> 
     <CareSettingName> 
     <Name>Hosp1/Name> 
     <Name>Hosp2/Name> 
     <Name>Hosp3/Name> 
     <Name>Hosp4/Name> 
     </CareSettingName> 
     <DocNames> 
     <Name>Doc1/Name> 
     <Name>Doc2/Name> 
     <Name>Doc3/Name> 
     </DocNames> 
    </Default> 

С помощью следующего кода я пытаюсь удалить Hosp4:

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(localXMLfile); 
XmlNode node = xmlDoc.SelectSingleNode("/Default/CareSettingName[Name='Hosp4']"); 

node.ParentNode.RemoveChild(node); 
xmlDoc.Save(localXMLfile); 

Когда я запускаю это, удаляющий ВСЕ записи в CareSettingName - не единственное, что я ищу. Я не вижу, чтобы найти проблему. Может кто-нибудь, пожалуйста, помогите мне?

Может ли кто-нибудь помочь мне? Благодарю.

ответ

2

Это потому, что вы выбираете /Default/CareSettingName (когда он содержит Name, равный Hosp4).

Попробуйте изменить XPath для:

/Default/CareSettingName/Name[.='Hosp4'] 
+0

Я благодарю вас очень много! Это сработало. Синтаксис, синтаксис ... – user2058253

+0

@ user2058253 - Тебе очень рады. Можете ли вы принять этот ответ, установив галочку рядом с ним? Благодаря! –

Смежные вопросы