парсинг XML-файлов и выполнение теста «пройти / не пройти» --Linq to xml? - PullRequest
0 голосов
/ 19 сентября 2011

Итак, мне нужно разобрать xml-файлы и извлечь данные из файла, и с учетом извлекаемого мной значения мне нужно, чтобы код определил, прошел он тест или нет.

например: Я извлекаю XMax, и он должен быть меньше 200, и если он пройден, то если он выше, то не получится. Я извлекаю XMin, и он должен быть больше -200, и если он пройден, если его меньше, он потерпел неудачу. Я извлекаю YMax, и он должен быть меньше 200, и если он пройден, если он выше, он потерпел неудачу. Я извлекаю YMin, и он должен быть больше -200, и если он пройден, если его меньше, он потерпел неудачу.

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

<XAxisCalib>
      <Max>288.46</Max>
      <Min>-46.6</Min>
    </XAxisCalib>
    <YAxisCalib>
      <Max>646.76</Max>
      <Min>-89.32</Min>
    </YAxisCalib>
    <ZAxisCalib>
      <Max>19.24</Max>
      <Min>-143.63</Min>

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

1 Ответ

1 голос
/ 19 сентября 2011

Использование LINQ to XML звучит хорошо для меня, да. Что-то вроде:

XDocument doc = XDocument.Load("file.xml");
int xMax = (int) doc.Root.Element("XMax");
int yMax = (int) doc.Root.Element("YMax");
int xMin = (int) doc.Root.Element("XMin");
int yMin = (int) doc.Root.Element("YMin");

return xMax < 200 &&
       xMin > -200 &&
       yMax < 200 &&
       yMin > -200;

Если это не та вещь, о которой вы думали, пожалуйста, дайте больше подробностей.

РЕДАКТИРОВАТЬ: если проблема состоит в четырех различных тестах, вы хотели бы что-то вроде:

public bool ValidateXMax(XDocument doc)
{
    int xMax = (int) doc.Root.Element("XMax");
    return xMax < 200;
}

... но повторяется четыре раза. Конечно, повторение немного уродливо, как и жесткое кодирование значений, но если честно, неясно, что вы пытаетесь сделать. Другая альтернатива:

XDocument doc = XDocument.Load("file.xml");
int xMax = (int) doc.Root.Element("XMax");
int yMax = (int) doc.Root.Element("YMax");
int xMin = (int) doc.Root.Element("XMin");
int yMin = (int) doc.Root.Element("YMin");

bool xMaxValid = xMax < 200;
bool yMaxValid = yMax < 200;
bool xMinValid = xMin > -200;
bool xMinValid = yMin > -200;
...