LINQ to XML:忽略属性大小写

6
我使用LINQ to XML处理由Autodesk公司创建的PackageContents.xml文件。该公司已经定义了此XML文件的结构在此,但没有XSD模式。
我的问题是:该公司违反了规则……元素和属性的大小写不正确。例如,可能会定义“Url”属性而不是“URL”属性(大小写不同)。
但是在XML中大小写很重要(或者用英语说):

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

“URL”不等于“Url”-这样的属性将无法找到。
我可以通过LINQ to XML(或其他方式)解决这个问题吗?还是不能?
1个回答

7
虽然使用myXelement.Attribute("URL")确实需要正确的大小写,但并没有阻止您进行以下操作:
var attribute = x.Attributes()
                 .SingleOrDefault(xa => 
                     string.Equals(xa.Name.LocalName, 
                                   "Url", 
                                   StringComparison.InvariantCultureIgnoreCase));

将此内容封装在适当的扩展或静态辅助方法中,您的消费代码就不会太糟糕了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接