Member 13050667 Ответов: 1

C# как сохранить список строк в новом классе?


Всем привет!

У меня есть XML, и я читаю и храню данные оттуда.
любить:
<root>
  <main>
    <1>sample</1>
    <2>sample</2>
    <context>sample</context>
    <context>sample</context>
    <context>sample</context>
    <context>sample</context>
  </main>
<main>
    <1>sample</1>
    <2>sample</2>
    <context>sample</context>
    <context>sample</context>
    <context>sample</context>
  </main>
<main>
    <1>sample</1>
    <2>sample</2>
  </main>
</root>


По какой-то причине с приведенным ниже кодом я не могу сохранить список контекста для каждого класса.

Что я уже пробовал:

Я сохраняю все "главное" в новом классе, как это:
ht.Add(new HandledTUs { SOURCE = 1, TARGET = 2, context = context,});


Класс выглядит примерно так:

public class TUs
        {
            private List<string> _CONTEXT = new List<string>();
            

            public string 1{ get; set; }
            public string 2{ get; set; }
            public List<string> CONTEXT { get { return _CONTEXT; } set { _CONTEXT = value; } }

            

        }

Richard MacCutchan

Ни один из этих кодов не имеет смысла. Что такое ht, handledTUs, TUs и т. д.? Где создаются эти объекты, как заполняется список ... ?

1 Ответов

Рейтинг:
5

OriginalGriff

Чтобы добавить к тому, что говорит Ричард, 1 и 2 это не имена переменных или свойств, которые не могут начинаться с числового символа.
Таким образом, ваш код C# плох - он не компилируется - и то же самое относится к именам полей XML, которые также должны начинаться с буквы подчеркивания.

Итак, ваш код плох, данные yoru плохи - я не удивлен, что любой код, который вы используете, не будет работать!
Если я исправлю ваш xml-файл:

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <main>
    <A1>sample</A1>
    <A2>sample</A2>
    <context>sample</context>
    <context>sample</context>
    <context>sample</context>
    <context>sample</context>
  </main>
<main>
    <A1>sample</A1>
    <A2>sample</A2>
    <context>sample</context>
    <context>sample</context>
    <context>sample</context>
  </main>
<main>
    <A1>sample</A1>
    <A2>sample</A2>
  </main>
</root>
И использовать против для создания классов:

/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class root
    {

    private rootMain[] mainField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("main")]
    public rootMain[] main
        {
        get
            {
            return this.mainField;
            }
        set
            {
            this.mainField = value;
            }
        }
    }

/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class rootMain
    {

    private string a1Field;

    private string a2Field;

    private string[] contextField;

    /// <remarks/>
    public string A1
        {
        get
            {
            return this.a1Field;
            }
        set
            {
            this.a1Field = value;
            }
        }

    /// <remarks/>
    public string A2
        {
        get
            {
            return this.a2Field;
            }
        set
            {
            this.a2Field = value;
            }
        }

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("context")]
    public string[] context
        {
        get
            {
            return this.contextField;
            }
        set
            {
            this.contextField = value;
            }
        }
    }
Тогда класс rootMain выглядит как ваш класс TUs.
(VS может генерировать XML - классы для вас из XML-данных-создайте новый пустой файл класса и выберите в строке меню пункт "Edit...Paste Special...Paste XML as classes", и он будет генерировать классы на основе данных буфера обмена.)


Richard MacCutchan

Полезный совет, о котором я не знал.

Member 13050667

Извините, пожалуйста, не обращайте внимания на название, я спешил. Это всего лишь короткий простой пример. Конечно, реальный xml имеет правильные имена узлов. Я просто хотел показать образец. Кроме того, NDA не позволяет мне показывать исходный код. Но спасибо вам за помощь! Это дало мне несколько полезных идей!

OriginalGriff

Всегда пожалуйста!