XmlElement читается как нечувствительный к регистру C# - PullRequest
0 голосов
/ 17 апреля 2020

Я использую XmlSeriazlier для десериализации файла xml.

var serializer = new XmlSerializer(typeof(T));
using (var reader = document.CreateReader())
   var result = (T)serializer.Deserialize(reader);

Xml может содержать элементы с различным регистром. Пример

<Layers>
    <Layer name="something" />
    <Layer name="anything" />
    <layer name="nothing" /> ====> 'l' instead of 'L'
</Layers>

Теперь мой класс такой.

public class Layers
{
    [XmlElement("Layer")]
    public List<Layer> Layers { get; set; }
}

Теперь это не будет читать 'layer' из xml. Как я могу прочитать все элементы xml и сохранить их в одном списке.

1 Ответ

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

Вы можете сделать свой Layer класс наследующим IXmlSerializable и реализовать что-то вроде приведенного ниже кода в вашей ReadXml реализации:

while (!reader.EOF)
{
    // Use string.Compare with StringComparison.OrdinalIgnoreCase to ignore case
    if (reader.NodeType == XmlNodeType.Element && string.Compare(reader.Name, "Layer", StringComparison.OrdinalIgnoreCase))
    {
        // reading code
    }
    else
    {
        reader.Read();
    }
}

Обратите внимание, что я не тестировал код, но это может быть подход к вашей проблеме.

...