c# - LINQ 到 XML : Ignoring of the case of attributes

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

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

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

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

Like element names, attribute names are case-sensitive and must start with a letter or underscore.

“URL”不等于“Url” - 找不到此类属性。

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

最佳答案

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

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

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

关于c# - LINQ 到 XML : Ignoring of the case of attributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525459/

相关文章:

c# - 有没有一种方法可以随机化整数,使访问者无法弄清楚对象的顺序

c# - 波浪号 (~) 解析为站点根目录而不是 asp.net 中的应用程序根目录

java - XML:从 SAX 内容处理程序中的 xsi:type 属性查找命名空间 uri

c# - 拥有静态 IReadOnlyDictionary 字段是否线程安全?

python - xpath 获取表中的第三个 tr 及更多内容

java - 读取 XML 元素的内部 XML

c# - 网络不好的情况下如何处理文件HttpClient.PostAsync文件上传?

c# - 迭代时只从 Api 获取结果

c# - 产品商标名称求同名类/ namespace

.net - Objective-C to Monotouch (.NET) 单行代码转换