【问题标题】:XmlElement read as case insensitive C#XmlElement 读取为不区分大小写的 C#
【发布时间】:2023-03-29 22:32:01
【问题描述】:

我正在使用 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; }
}

现在这不会从 xml 中读取“层”。如何读取所有 xml 元素并将它们保存在一个列表中。

【问题讨论】:

标签: c# xml xmlserializer


【解决方案1】:

您可以让您的 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();
    }
}

请注意,我没有测试代码,但这可能是解决您问题的一种方法。

【讨论】:

    猜你喜欢
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2017-12-01
    • 2012-12-01
    • 2013-03-06
    • 2020-02-18
    • 2012-10-07
    相关资源
    最近更新 更多