我有一个包含以下内容的XML文件:
<incometax>
<slab>
<lowerlimit>0</lowerlimit>
<upperlimit>200000</upperlimit>
<percentage>0</percentage>
</slab>
<slab>
<lowerlimit>200000</lowerlimit>
<upperlimit>500000</upperlimit>
<percentage>10</percentage>
</slab>
<slab>
<lowerlimit>500000</lowerlimit>
<upperlimit>1000000</upperlimit>
<percentage>20</percentage>
</slab>
<slab>
<lowerlimit>1000000</lowerlimit>
<upperlimit></upperlimit>
<percentage>30</percentage>
</slab>
</incometax>
用户必须输入薪水:
Console.WriteLine("Enter salary:");
int salary = int.Parse(Console.Readline());
根据工资,我们必须计算税额。
我写了一些像这样的代码..
XmlDocument xml = new XmlDocument();
xml.Load("filepath");
XmlNodeList slabs = xml.SelectNodes("//slab");
我将所有节点都变成了平板。如何获得个别子节点的价值?
答案 0 :(得分:1)
试试这个
XmlNodeList slabs = xml.SelectNodes("//slab[lowerlimit > 1000 and upperlimit > 1000]");
答案 1 :(得分:1)
您可以循环每个slabs
,然后进一步查询子元素。然后你可以得到每个元素的价值,并随心所欲地做任何事情。
这样的事情:
XmlDocument xml = new XmlDocument();
xml.Load("filepath");
XmlNodeList slabs = xml.SelectNodes("//slab");
foreach(var slab in slabs)
{
var nodeLowerLimit = slab.SelectSingleNode("lowerLimit");
var nodeUpperLimit = slab.SelectSingleNode("upperLimit");
var nodePercentageLimit = slab.SelectSingleNode("percentage");
string lowerLimit = nodeLowerLimit.Value;
string upperLimit = nodeUpperLimit.Value;
string percentage= nodePercentageLimit.Value;
//do something with these values
}
如果你想根据输入工资匹配一个百分比,那么你可以进行以下调整(当然@Killo已经提出了一个可能更好的替代方案 - 我之前没有使用过,所以无法确认):
string percentageValue = "0";//just a default
foreach(var slab in slabs)
{
var nodeLowerLimit = slab.SelectSingleNode("lowerLimit");
var nodeUpperLimit = slab.SelectSingleNode("upperLimit");
var nodePercentageLimit = slab.SelectSingleNode("percentage");
string lowerLimit = nodeLowerLimit.Value;
string upperLimit = nodeUpperLimit.Value;
string percentage= nodePercentageLimit.Value;
//check for empty strings as meaning "no limit", and check sal is within range
if((string.IsNullOrEmpty(lowerLimit) || int.Parse(lowerLimit) <= sal) &&
(string.IsNullOrEmpty(upperLimit) || int.Parse(upperLimit) >= sal))
{
percentageValue = percentage;
}
}
//here you can convert the percentageValue to an int if you need to
注意:上面的代码在解析之前不检查值是否有效int
。如果您确定您的XML结构,那么您将不会发现问题。但是,我建议进一步开发代码并使用int.TryParse()进行验证。但我会让你玩一玩; - )