【问题标题】:LINQ to XML: Ignoring of the case of attributesLINQ to XML:忽略属性的大小写
【发布时间】:2012-11-23 08:38:01
【问题描述】:

我使用 LINQ to XML 处理由 Autodesk 公司创建的 PackageContents.xml 文件。公司已定义此 XML 文件 here 的结构,但没有 XSD 架构。

我有一个问题:这家公司违反了他的规则......元素和属性的情况通常是无效的。例如,可以定义“Url”属性而不是“URL”属性(不同的大小写)。

但是case is important for XML(或in English):

与元素名称一样,属性名称区分大小写并且必须以 带有字母或下划线。

“URL”不等于“Url”——找不到这样的属性。

我可以通过 LINQ to XML(或其他)解决这个问题,还是不能?

【问题讨论】:

    标签: c# .net xml linq-to-xml casing


    【解决方案1】:

    虽然myXelement.Attribute("URL") 需要正确的大小写是正确的,但没有什么能阻止你这样做

    var attribute = x.Attributes()
                     .SingleOrDefault(xa => 
                         string.Equals(xa.Name.LocalName, 
                                       "Url", 
                                       StringComparison.InvariantCultureIgnoreCase));
    

    将其包装在合适的扩展或静态辅助方法中,您的消费代码应该不会太糟糕。

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 2012-07-13
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2020-07-25
      • 1970-01-01
      相关资源
      最近更新 更多