powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как добавить атрибут в XML?
4 сообщений из 4, страница 1 из 1
Как добавить атрибут в XML?
    #38985215
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой класс,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public Class JVFCard
    Public driver_name As String
    Public report_date As String
    Public pm_code As String
    Public job_number As String
    Public trip_necessary As String
    Public travel_q(5) As String
End Class


который сериализуется в XML используя XmlSerializer. Вот, что на выходе

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<JVFCard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <driver_name />
  <report_date>06/16/2015</report_date>
  <pm_code />
  <job_number />
  <travel_q>
    <string>wer</string>
    <string>wer</string>
    <string>wer</string>
    <string>wer</string>
    <string>wer</string>
  </travel_q>
</JVFCard>


Нужно добавить ID для каждой записи. Как?

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<JVFCard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <driver_name />
  <report_date>06/16/2015</report_date>
  <pm_code />
  <job_number />
  <travel_q>
    <string id="1">wer</string>
    <string id="2">wer</string>
    <string id="3">wer</string>
    <string id="4">wer</string>
    <string id="5">wer</string>
  </travel_q>
</JVFCard>
...
Рейтинг: 0 / 0
Как добавить атрибут в XML?
    #38985248
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

реализовать интерфейс IXmlSerializable:
C#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public class JVFCard : IXmlSerializable
{
    public string driver_name;
    public string report_date;
    public string pm_code;
    public string job_number;
    public string trip_necessary;
    public string[] travel_q;

    public System.Xml.Schema.XmlSchema GetSchema()
    {
        throw new NotImplementedException();
    }

    public void ReadXml(XmlReader reader)
    {
        throw new NotImplementedException();
    }

    public void WriteXml(XmlWriter writer)
    {
        writer.WriteElementString("driver_name", driver_name);
        writer.WriteElementString("report_date", report_date);
        writer.WriteElementString("pm_code", pm_code);
        writer.WriteElementString("job_number", job_number);

        writer.WriteStartElement("travel_q");
        for (int i = 0; i < travel_q.Length; ++i)
        {
            writer.WriteStartElement("string");
            writer.WriteAttributeString("id", (i + 1).ToString());
            writer.WriteValue(travel_q[0]);
            writer.WriteEndElement();
        }
        writer.WriteEndElement();
    }
}



Можно ещё дополнительный класс сделать и навесить атрибуты. Но вместо массива строк будет массив объектов этого дополнительного класса.
C#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class JVFCard
{
    public string driver_name;
    public string report_date;
    public string pm_code;
    public string job_number;
    public string trip_necessary;

    [XmlArrayItem("string")]
    public Travel[] travel_q;
}

public class Travel
{
    [XmlAttribute]
    public int Id;

    [XmlText]
    public string Value;
}


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var jvfcard = new JVFCard
{
    driver_name = "",
    report_date = "06/16/2015",
    pm_code = "",
    job_number = "",
    trip_necessary = "",

    travel_q = new Travel[5] {
        new Travel { Id=1, Value="wer" },
        new Travel { Id=2, Value="wer" },
        new Travel { Id=3, Value="wer" },
        new Travel { Id=4, Value="wer" },
        new Travel { Id=5, Value="wer" } }
};


Соответственно, вместо jvfcard.travel_q[0] придётся использовать jvfcard.travel_q[0].Value.
...
Рейтинг: 0 / 0
Как добавить атрибут в XML?
    #38985252
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterКак?
через соответсвующую xslt трансформацию прорустить
...
Рейтинг: 0 / 0
Как добавить атрибут в XML?
    #38985253
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvik,

Ага. Второй вариант что нужно. Сам возле него ходил, не дотянул немного. Спасибо!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как добавить атрибут в XML?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]