LINQ to XML:忽略属性的情况

And*_*man 6 .net c# xml linq-to-xml casing

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

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

案例对于XML(或英语)很重要:

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

"网址"不等于"网址" - 找不到此类属性.

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

Aak*_*shM 6

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

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

用合适的扩展或静态帮助方法包装它,你的消费代码不应该太糟糕.