6

オートデスク社が作成したPackageContents.xmlファイルを操作するためにLINQtoXMLを使用しています。会社はこの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 に答える