Я пытаюсь разобрать Visual Studio файл ресурса, который содержит различные переведённые строки следующим образом:Чтение результата LINQ и XDocument
<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>
, а также другие вещи. Я просто хочу, чтобы имя и значение строки.
Я пытался разобрать этот файл построчно, используя следующие:
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
}
Проблема заключается в том, что, когда я доберусь до своего цикла Еогеаспа я получаю исключение или: «Необработанное исключение типа„System.NullReferenceException“произошло в myprogram.exe . Ссылка на объект не установлена в экземпляр объекта "
Кто-нибудь знает, почему? Я использую LINQ правильно
В какой строке он выделяется? –
Я угадываю либо item.Attribute («name»). Значение или item.Element («value»). Значение –
Оно не выделяет ни одной строки. Он выходит за оператор LINQ, а затем, когда dubugger попытался сделать первый цикл foreach, отладчик появляется, чтобы вернуться к выбору нового оператора, а затем я получаю ошибку. –