Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析xml文件并执行通过/失败测试——Linq到xml?_C#_Parsing_Linq To Xml_Xml Parsing - Fatal编程技术网

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

C# 解析xml文件并执行通过/失败测试——Linq到xml?,c#,parsing,linq-to-xml,xml-parsing,C#,Parsing,Linq To Xml,Xml Parsing,因此,我需要做的是解析xml文件并从文件中提取数据,使用我提取的值,我需要让代码确定它是否通过了测试 例如: 我提取出XMax,它需要小于200,如果它是通过的,如果它是更高的,它就失败了。 我提取出XMin,它需要大于-200,如果它是通过的,如果它是失败的。 我提取出YMax,它需要小于200,如果它是通过的,如果它更高,它失败了。 我提取出YMin,它需要大于-200,如果它通过了,如果它失败了,那么它通过了 以下是xml文件的外观以及我需要检查的值: <XAxisCalib>

因此,我需要做的是解析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>

288.46
-46.6
646.76
-89.32
19.24
-143.63

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

使用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”);
intxmin=(int)doc.Root.Element(“xMin”);
int-yMin=(int)doc.Root.Element(“yMin”);
返回xMax<200&&
xMin>-200&&
yMax<200&&
yMin>-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");

return xMax < 200 &&
       xMin > -200 &&
       yMax < 200 &&
       yMin > -200;
public bool ValidateXMax(XDocument doc)
{
    int xMax = (int) doc.Root.Element("XMax");
    return xMax < 200;
}
public bool ValidateXMax(XDocument文档)
{
int xMax=(int)doc.Root.Element(“xMax”);
返回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;
XDocument doc=XDocument.Load(“file.xml”);
int xMax=(int)doc.Root.Element(“xMax”);
int yMax=(int)doc.Root.Element(“yMax”);
intxmin=(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;

不,这似乎是在获取它们的值,因此代码需要检查文件并调用xmax和xmin的。。。如果高于该值,则失败;如果低于该值,则通过。您写道:返回xMax<200&&xMin>-200&&yMax<200&&yMin>-200;这是否返回提取的值?我只想确定它是通过还是失败。@Casey:这是返回它是否通过测试。老实说,目前还不清楚你的意思。请花些时间澄清您的问题,并阅读您是否熟悉错误“由于程序返回void,返回关键字后面必须跟有对象表达式。”@Casey:不能说这听起来很有道理,但如果您显示失败的代码,这会有所帮助。你还没有很清楚地描述你要做的事情——我已经给出了我的最佳猜测来帮助你,但是你真的需要给出更多的细节。你读了我之前评论中的链接了吗?哦,是的,谢谢你的链接:所以我需要做的是查看xml文件并检查以确保xmax值低于200,xmin高于-200,ymax低于,Ymin高于,如果每种情况下都为真或假,那么代码应该返回通过或失败。