Получить значение атрибута xml при отмене с xml до c# - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь получить значения атрибутов из атрибута type тега ID в коллекции Included_By_Organization ниже xml. Я могу получить значения просто отлично, но атрибут возвращается ноль.

Включено в пример объекта организации:

Тип: ноль <- мне нужно, чтобы это было Organization_Reference_ID Значение: RU7860 </p>

XML

<wd:Included_by_Organizations wd:Descriptor="RU7860 Europe Forwarding Overhead">
        <wd:ID wd:type="WID">b8129574800601751d8538accb023f35</wd:ID>
        <wd:ID wd:type="Organization_Reference_ID">RU7860</wd:ID>
        <wd:ID wd:type="Custom_Organization_Reference_ID">RU7860</wd:ID>
</wd:Included_by_Organizations>

Класс для xml массива

        [XmlAttribute("type")]
        public string Type { get; set; }

        [XmlText]
        public string Value { get; set; }

        public IncludedByOrganization()
        {
        }

Класс для получения xml значений

    [XmlElement("Reference_ID")]
    public string CostCenterId { get; set; }

    [XmlElement("code")]
    public string Code { get; set; }

    [XmlElement("name")]
    public string Name { get; set; }

    [XmlArray("Included_by_Organizations")]
    [XmlArrayItem("ID")]
    public IncludedByOrganization[] IncludedByOrganization { get; set; }

Метод десарлизации

        ReportData reportDataList = new ReportData();
        XmlSerializer serializer = new XmlSerializer(typeof(ReportData));

        using (var reader = XmlReader.Create(filePath))
        {
            ReportData reportData = (ReportData)serializer.Deserialize(reader);
            reportDataList = reportData;
        }

        return reportDataList;

1 Ответ

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

На основе вашего примера я создал еще один и сумел прочитать type.

[Serializable, XmlRoot()]
public class XML
{
    [XmlArray("Included_by_Organizations")]
    [XmlArrayItem("ID")]
    public IncludedByOrganization[] IncludedByOrganization { get; set; }
}

Обратите внимание на [Serialization, XmlRoot()] attirbutes.

[Serializable]
public class IncludedByOrganization
{
    [XmlAttribute("type")]
    public string Type { get; set; }

    [XmlText]
    public string Value { get; set; }

    public IncludedByOrganization()
    {
    }
}

Также добавлено [Serialization] атрибут.

Текстовый пример:

<?xml version="1.0" encoding="UTF-8"?>
<XML>
    <Included_by_Organizations Descriptor="RU7860 Europe Forwarding Overhead">
        <ID type="WID">b8129574800601751d8538accb023f35</ID>
        <ID type="Organization_Reference_ID">RU7860</ID>
        <ID type="Custom_Organization_Reference_ID">RU7860</ID>
    </Included_by_Organizations>
</XML>

Пример хранится в string xml.

XmlSerializer serializer = new XmlSerializer(typeof(XML));
var reader = new StringReader(xml);
var deserialized = serializer.Deserialize(reader);

Результат:

enter image description here

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