2014-10-24 3 views
0

У меня есть этот объект здесь:обновление в C# на основе условия

public class ServiceConfig 
{ 
    public List<DatabaseDescriptor> Databases { get; set; } 
} 

public class DatabaseDescriptor 
{ 
    [XmlElement("Name")] 
    public string Name { get; set; } 
    public List<Table> Tables { get; set; }   
} 

public class Table 
{ 
    [XmlElement("ID")] 
    public string ID { get; set; } 
    [XmlElement("TableName")] 
    public string TableName { get; set; } 
} 

У меня есть

public xml.ServiceConfig xmlData { get; set; } 

Как я обновить XMLDATA DatabaseDescriptors где имя == тест т.е. Как я обновить его?

сериализации BACK TO XML

XmlSerializer serializer = new XmlSerializer(typeof(xml.ServiceConfig)); 
      using (TextWriter writer = new StreamWriter(@"C:\Xml.xml")) 
      { 
       serializer.Serialize(writer, ServiceConfig); 
      } 
+0

Я не знаю, какие библиотеки вы используете. Каковы объявления 'using' в верхней части исходного кода? –

+0

@SHiNKiROU Я просто получаю данные после сериализации, и мне нужно изменить xmlData – Mal

+0

Вы хотите найти экземпляр DatabaseDescriptor с именем == «Тест» и обновлениями? Понимаю? – Fabio

ответ

0

если имя является уникальным

using System.Linq; 


DatabaseDescriptor db = xmlData.Databases.SingleOrDefault(db => db.name == "test"); 
if (db != null) 
{ 
       //Update db instance 
} 

еще

var dbs = xmlData.Databases.Where(db => db.name == "test"); 

    foreach (DatabaseDescriptor element in dbs) 
    { 
     // Update elements 
    } 

если вы хотите сериализации/десериализации в XML базы данных свойств необходимо украсить [XmlArray],

вы видите Deserialize XML does not populate array

+0

Спасибо, это выглядит хорошо :) Прошу вас рассказать мне, как сериализовать мой ServiceConfig обратно в xml-файл ?, Я использую писателя xml, но, возможно, моя треска не правильная , см. мое редактирование – Mal

+0

Что не так? Список не сериализуется? – Fabio

0

Try:

DatabaseDescriptor updateObject = xmlData.Databases.FirstOrDefault(_d => _d.Name.Equals("Test")); 
if(updateObject != null) 
{ 
    // update what you want to update... 
} 
Смежные вопросы