XML читать неудобные значения

Мне действительно нужна твоя помощь.

Я хотел прочитать данные из файла XML, содержание которого выглядит так

<row>
    <Menue>949</Menue>
    <Text_D>Sonstige 49</Text_D>
    <Text_C>特别餐 49</Text_C>
    <Preis3>49</Preis3>
</row>
<row>
    <Menue>950</Menue>
    <Text_D>Sonstige 50</Text_D>
    <Text_C>特别餐 50</Text_C>
    <Preis3>50</Preis3>
</row>

Я хочу получить содержимое Text_D, выполнив поиск по идентификатору меню. Я пробовал так много способов сейчас, мне нужно прочитать его, потому что другое приложение переопределит этот XML-файл, и мне нужно, чтобы мое приложение обновлялось.

Мое последнее "решение" было довольно хорошим... но, к сожалению, время загрузки убьет всю систему. Это был массив для поиска строки идентификатора.

if(File.ReadLines(path).Skip(counterarray).Take(1).First().Contains(articlecode))
{
if not found - counter+=1;
if found - show...
}

надеюсь, вы можете помочь мне в этот раз!

2 ответа

Решение

Используйте Linq to XML:

var doc = XDocument.Load(path);
string textD =
    (from row in doc.Root.Elements("row")
     let id = row.Element("Menue").Value
     where id == "949"
     select row.Element("Text_D").Value).FirstOrDefault();

Для простоты рассмотрите использование XDocument, если он доступен на вашей платформе, который загрузит весь файл в память в дереве разбора и позволит выполнять запросы Linq для него, или XmlReader/XmlWriter, если вы хотите более точное управление

Другие вопросы по тегам