我使用 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/