次のようなさまざまな翻訳された文字列を含むビジュアル スタジオ リソース ファイルを解析しようとしています。
<data name="InvalidGroupType" xml:space="preserve">
<value>La sélection du type de groupe n'est pas valide.</value>
</data>
<data name="ProgressFailure" xml:space="preserve">
<value>Liste des échecs</value>
</data>
<data name="Loronix" xml:space="preserve">
<value>Loronix</value>
</data>
<data name="InputString" xml:space="preserve">
<value>Entrée</value>
</data>
他のものと同様に。データ名と値の文字列が欲しいだけです。
次を使用して、このファイルを1行ずつ解析しようとしました。
StreamReader fileMain = new StreamReader(MainFile);
while ((line = fileMain.ReadLine()) != null)
{
string data = checkForData(line); --checks each line for "<data name="
if( data.Length > 0)
StringsToTranslatelist.Add(data);
}
しかし、これを行うにはもっと良い方法があるに違いないと思いました。だから私はLINQを次のように使いました:
XDocument xDoc = XDocument.Load(resxFile);
var result = from item in xDoc.Descendants("data")
select new
{
Name = item.Attribute("name").Value,
Value = item.Element("value").Value
};
foreach (var entry in result)
{
string name = entry.Name;
string value = entry.Value;
//Do somethign here
}
問題は、foreach ループに到達したときに例外 が発生するか、「MyProgram.exe で 'System.NullReferenceException' 型の未処理の例外が発生しました。オブジェクト参照がオブジェクトのインスタンスに設定されていません」ということです。
誰もが理由を知っていますか?? LINQ を正しく使用していますか