Написание XML-файлов в C #? - PullRequest
3 голосов
/ 02 апреля 2012

Как мне поступить так:

for( var i = 0; i < emp; i++ )
{
    Console.WriteLine("Name: ");
    var name = Console.ReadLine();

    Console.WriteLine("Nationality:");
    var country = Console.ReadLine();

    employeeList.Add( new Employee(){
                        Name = name,
                        Nationality = country
                     } );
}

Я хочу выполнить пробный запуск, например:

Imran Khan
Pakistani

, чтобы сгенерировать файл XML:

<employee>
   <name> Imran Khan </name>
   <nationality> Pakistani </nationality>
</employee>

Есть предложения?

Ответы [ 5 ]

5 голосов
/ 02 апреля 2012

Я предлагаю использовать сериализацию XML:

[XmlRoot("employee")]
public class Employee {
    [XmlElement("name")]
    public string Name { get; set; }

    [XmlElement("nationality")]
    public string Nationality { get; set; }
}

void Main() {
    // ...
    var serializer = new XmlSerializer(typeof(Employee));
    var emp = new Employee { /* properties... */ };
    using (var output = /* open a Stream or a StringWriter for output */) {
        serializer.Serialize(output, emp);
    }
}
2 голосов
/ 02 апреля 2012

Есть несколько способов, но мне нравится использовать класс XDocument.

Вот хороший пример того, как это сделать. Как я могу построить XML в C #?

Если у вас есть какие-либо вопросы, просто спросите.

1 голос
/ 02 апреля 2012

Чтобы дать вам представление о том, как XDocument работает на основе вашего цикла, вы должны сделать следующее:

XDocument xdoc = new XDocument();
xdoc.Add(new XElement("employees"));
for (var i = 0; i < 3; i++)
{
     Console.WriteLine("Name: ");
     var name = Console.ReadLine();

      Console.WriteLine("Nationality:");
      var country = Console.ReadLine();

      XElement el = new XElement("employee");
      el.Add(new XElement("name", name), new XElement("country", country));
      xdoc.Element("employees").Add(el);
}

После запуска xdoc будет выглядеть примерно так:

<employees>
  <employee>
    <name>bob</name>
    <country>us</country>
  </employee>
  <employee>
    <name>jess</name>
    <country>us</country>
  </employee>
</employees>
1 голос
/ 02 апреля 2012
<employee>
   <name> Imran Khan </name>
   <nationality> Pakistani </nationality>
</employee>

XElement x = new  XElement ("employee",new XElement("name",e.name),new XElement("nationality",e.nationality) );
1 голос
/ 02 апреля 2012
var xelement = new XElement("employee", 
   new XElement("name", employee.Name),
   new XElement("nationality", employee.Nationality),
);

xelement.Save("file.xml");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...