6

我使用 LINQ to XML 处理由 Autodesk 公司创建的 PackageContents.xml 文件。公司在这里定义了这个 XML 文件的结构,但没有 XSD 模式。

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

但是大小写对于 XML(或英文)很重要:

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

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

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

4

1 回答 1

7

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

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

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

于 2012-11-23T09:46:18.410 回答