解析xml文件并执行通过/失败测试——Linq to xml

本文关键字:xml 测试 失败 Linq to 文件 执行 解析 | 更新日期: 2023-09-27 18:08:55

所以我需要做的是解析xml文件并从文件中提取出数据,并使用我提取出的值,我需要让代码确定它是否通过了测试。

例如

:我提取出XMax,它需要小于200,如果它通过,如果它大于200,则失败。我提取出XMin,它需要大于-200,如果大于-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到XML来解析文件和数据,但现在我确定如何比较值。

解析xml文件并执行通过/失败测试——Linq to xml

使用LINQ到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;