Пройти / провалить тест xml-парсинга - PullRequest
1 голос
/ 19 сентября 2011

Так что у меня есть этот код парсинга XML-файлов. Что мне нужно сделать, это проверить значения, которые находятся в пределах диапазона и выписать, если он пройдет / не удастся. Я не уверен, что мой код: «где» утверждения верны. Мне нужен код для поиска "Max" и "Min" каждого оператора и для записи, например, XMax, значение меньше, чем 287, которое оно передало, и больше, чем не удалось.

   string[] fileEntries = Directory.GetFiles(@"c:\Sciclone UAC", "*.cfg*");
        foreach (string fileName in fileEntries)
        {

            var query = from file in fileEntries
                        let doc = XDocument.Load(file)
                        let x = doc.Descendants("XAxisCalib").Single()
                        where (int)x.Attribute("Max") > 287
                        where (int)x.Attribute("Min") < -50 
                        let y = doc.Descendants("YAxisCalib").Single()
                        where (int)y.Attribute("Max") > 645
                        where (int)y.Attribute("Min") > -87
                        let z = doc.Descendants("ZAxisCalib").Single()
                        where (int)z.Attribute("Max") > 20
                        where (int)z.Attribute("Min") > -130
                        select new 
                       {

                            XMax = x.Element("Max").Value,
                            XMin = x.Element("Min").Value,
                            YMax = y.Element("Max").Value,
                            YMin = y.Element("Min").Value,
                            ZMax = z.Element("Max").Value,
                            ZMin = z.Element("Min").Value
                        };

Вот пример того, как выглядит один XML-файл:

<XAxisCalib>
      <Max>281.68</Max>
      <Min>-46.79</Min>
    </XAxisCalib>
    <YAxisCalib>
      <Max>570.57</Max>
      <Min>-123.24</Min>
    </YAxisCalib>
    <ZAxisCalib>
      <Max>31.01</Max>
      <Min>-100.95</Min>

1 Ответ

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

Что ж, ваш подход кажется мне немного слабым, потому что пользователь может потенциально ошибаться и писать мусор вместо целого, так что ваше отклонение будет неудачным. Не лучше ли использовать чистый xsd-подход, а затем проверять отдельные сущности? Как личный опыт, наличие XSD для проверки простого xml и проверки для каждой сущности приводит к легкому обслуживанию и расширению кода, даже если набор программ генерируется машиной (поскольку иногда изменяются спецификации;)), поэтому я бы предпочел старый вместо того, чтобы использовать linq to XML, чтобы решить такую ​​ситуацию, есть только мое мнение, исходя из моего опыта.

...