Xml Реализация файла на основе - PullRequest
0 голосов
/ 02 апреля 2020

У меня большой проект. Я делаю приложение моделирования для национального экзамена в C#. У нас должен быть файл симуляции, чтобы использовать приложение. Файл моделирования содержит название моделирования, ключ ответа, путь к файлу вопроса (pdf) и т. Д. c. Файл моделирования также является файлом XML. Мои вопросы: 1. Какова лучшая реализация для чтения и записи (также для изменения заголовка и т. Д. c) в этот файл моделирования? 2. Нужно ли разделять классы SimulationFileReader и SimulationFileWriter? Или только один класс содержит все операции чтения и записи? 3. Что должен реализовать класс?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Вы можете использовать Систему. Xml. Сериализация для этого. Вы создаете обычный класс C# и украшаете его атрибутами стиля XML. Существует атрибут для каждого типа XML, например XmlRoot, XmlArray, XmlAttribute et c.

Вот пример

public class CreditNote
{
    [XmlArray("items")]
    [XmlArrayItem("article")]
    public List<Article> Articles { get; } = new List<Article>();

    [XmlAttribute("reason")]
    public string Reason { get; set; }
}

[XmlRoot("article")]
public class Article
{
    [XmlAttribute("itemNo")]
    public string ItemNumber { get; set; }
}

Затем вы поворачиваете XML файл в экземпляр с XmlSerializer.Serialize и экземпляр в файл с XmlSerializer.Deserialize.

T serializeObject<T>(string file)
{
    T obj = default;

    using (FileStream fs = new FileStream(file, FileMode.Open))
    {
        using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
            obj = (T)xmlSerializer.Deserialize(sr);
            sr.Close();
        }
        fs.Close();
    }

    return obj;
}
0 голосов
/ 02 апреля 2020

Вот пример:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            DataTable dt = new DataTable("Test_1");
            dt.Columns.Add("Number", typeof(int));
            dt.Columns.Add("Question", typeof(string));
            dt.Columns.Add("Answer", typeof(string));
            dt.Columns.Add("A", typeof(string));
            dt.Columns.Add("B", typeof(string));
            dt.Columns.Add("C", typeof(string));
            dt.Columns.Add("D", typeof(string));
            dt.Columns.Add("E", typeof(string));

            dt.Rows.Add(new object[] { 1, "Red Fruit", "A", "Apple", "Banana", "Grape", "Orange", "Pear" });
            dt.Rows.Add(new object[] { 2, "How much is 1 + 2", "C", "1", "2", "3", "4", "5" });

            dt.WriteXml(FILENAME);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...