2015-05-17 8 views
1

У меня есть XML-файл в моем проекте Visual Web Developer, который выглядит следующим образом:Delete Part Of XML в C#

<?xml version="1.0" encoding="utf-8"?> 
<complaints> 
    <complaint> 
     <user>omern</user> 
     <content>asd</content> 
     <ID>1</ID> 
    </complaint> 
    <complaint> 
     <user>omeromern</user> 
     <content>try2</content> 
     <ID>2</ID> 
    </complaint> 
</complaints>  

Я хочу удалить complaint узлы, которые имеют и ID равное 2. Как я могу это сделать ?

+1

Для Wi С.О. правил, вы должны размещать код, который вы пробовали до сих пор –

+2

Марк его затем нажмите клавишу del. Обязательно сохраните файл на диске после этого, иначе жалоба останется в следующий раз при открытии файла. P.S .: Если вы не цените юмористический аспект моего комментария, считайте, что с объемом информации, которую вы дали в своем вопросе, это совершенно правильное решение вашей проблемы. – connexo

+0

На самом деле я создал что-то даже из небольшого количества информации;), но я ценю юмористический комментарий –

ответ

1

Вы можете использовать класс System.Xml.XmlDocument для изменения XML-документов на C#. Обратите внимание, что этот класс живет в сборке System.Xml.dll, поэтому вам нужно добавить ссылку на System.Xml в свой проект.

using System.Xml; 
internal class XmlExample 
{ 
    /// <summary> 
    /// Takes an XML string and removes complaint nodes with an ID of 2. 
    /// </summary> 
    /// <param name="xml">An XML document in string form.</param> 
    /// <returns>The XML document with nodes removed.</returns> 
    public static string StripComplaints(string xml) 
    { 
     XmlDocument xdoc = new XmlDocument(); 
     xdoc.LoadXml(xml); 
     XmlNodeList nodes = xdoc.SelectNodes("/complaints/complaint[ID = '2']"); 
     XmlNode complaintsNode = xdoc.SelectSingleNode("/complaints"); 
     foreach (XmlNode n in nodes) 
     { 
      complaintsNode.RemoveChild(n); 
     } 

     return xdoc.OuterXml; 
    } 
} 

Использование:

string xml = @"<?xml version=""1.0"" encoding=""utf-8""?> 
       <complaints> 
        <complaint> 
         <user>omern</user> 
         <content>asd</content> 
         <ID>1</ID> 
        </complaint> 
        <complaint> 
         <user>omeromern</user> 
         <content>try2</content> 
         <ID>2</ID> 
        </complaint> 
       </complaints>"; 
xml = XmlExample.StripComplaints(xml); 
1
//using System.Xml; 

public string RemoveComplaintWhereIDis(string xml, string id) 
{ 
    XmlDocument x = new XmlDocument(); 
    xml.LoadXml(xml); 
    foreach (XmlNode xn in x.LastChild.ChildNodes) 
    { 
     if (xn.LastChild.InnerText == id) 
     { 
      x.LastChild.RemoveChild(xn); 
     } 
    } 
    return x.OuterXml; 
} 

Основное использование:

string x = @"<?xml version=""1.0"" encoding=""utf-8""?> 
      <complaints> 
       <complaint> 
        <user>omern</user> 
        <content>asd</content> 
        <ID>1</ID> 
       </complaint> 
       <complaint> 
        <user>omeromern</user> 
        <content>try2</content> 
        <ID>2</ID> 
       </complaint> 
      </complaints>"; 

string without2 = RemoveComplaintWhereIDis(x, "2"); 

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

  • Нет связанных вопросов^_^