解析xml文件并执行通过/失败测试--Linq到xml?

时间:2011-09-19 12:57:34

标签: c# parsing linq-to-xml xml-parsing

所以我需要做的是解析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>

任何人都有关于如何编写程序的建议我正在考虑使用XML来解析文件和数据,但现在确定如何比较这些值。

1 个答案:

答案 0 :(得分:1)

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