[英]xml file parsing
我如何添加/更改我的代码,所以如果提取出max / min的值,它会将提取的值与设定值进行比较并写出通过/失败。 例如:xmax提取出来,它是280,我的代码中有一个条件,说xmax需要小于275,所以写出失败。 这需要为每个最大/最小时间完成。任何想法......? 我使用linq来解析xml,但是它们是更好的方法吗?
var query = from file in fileEntries
let doc = XDocument.Load(file)
let x = doc.Descendants("XAxisCalib").Single()
let y = doc.Descendants("YAxisCalib").Single()
let z = doc.Descendants("ZAxisCalib").Single()
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
};
这样的事可能吗?
var results = from item in query
select new
{
XMaxResult = item.XMax < 275 ? "pass" : "fail",
...
};
我会为此使用XML模式。
它将允许您构建C#,这样只需几行代码就可以检查文档的结构正确性和语义正确性。 它也可以与您的应用程序分开发布,以便用户可以了解文档的布局方式。 一些XML编辑器也支持模式,因此他们可能会在编辑器中获得某种自动语法支持/检查。
以下是检查XSD架构中的最大值的方法:
http://www.w3schools.com/schema/schema_facets.asp
...
<xs:element name="Max">
<xs:simpleType>
<xs:restriction base="xs:integer">
<!-- Must be less than 275 -->
<xs:maxInclusive value="274"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
...
您可以创建扩展方法来检查值
public static class Test {
static int check(this XElement element)
{
if(element.Value < 100 || element.Value > 275)
{
throw new Exception();
}
return element.Value;
}
}
那你可以做
select new
{
XMax = x.Element("Max").Check(),
XMin = x.Element("Min").Check(),
YMax = y.Element("Max").Check(),
YMin = y.Element("Min").Check(),
ZMax = z.Element("Max").Check(),
ZMin = z.Element("Min").Check()
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.