从XML文件中减去

时间:2015-04-29 11:46:27

标签: c# xml

我有一个XML文件,其中包含节点看起来像这样的轮胎库存

<Stock>
  <Tyre>
    <Manufacturer>Yokohama</Manufacturer>
    <Quantity>500</Quantity>
  </Tyre>
</Stock>

在另一个表格中,我有一个订单表格,您可以在文本框或组合框下拉菜单中选择轮胎制造商,我想在文本框中输入金额,它将从数量节点中减去并更新数量节点。

我是否必须为每个循环执行一次操作并查看每个轮胎制造商节点以获取输入到文本框中的名称?

foreach (XmlNode xNode in xDoc.SelectNodes("Stock/Tyre"))
{
    Stock st = new Stock();
    st.manufacturer = xNode.SelectSingleNode("Manufacturer ").InnerText;
    //???
}

在哪里发表评论?是我被困在哪里我怎么能从xml文件中的库存数量中减去文本框中的值。

我应该这样做还是完全错了?

1 个答案:

答案 0 :(得分:2)

使用LINQ to XML可以更轻松,更优雅地完成此任务:

var fileName = @"c:\test.xml";
var manufacturer = "Yokohama";
var amount = 100;

var doc = XDocument.Load(fileName);
var node = doc.XPathSelectElements("Stock/Tyre/Manufacturer")
              .FirstOrDefault(x => x.Value == manufacturer);
if (node != null)
{
    var valueNode = node.Parent.XPathSelectElement("Quantity");
    if (valueNode != null)
        valueNode.SetValue(Convert.ToInt32(valueNode.Value)  - amount);
}

doc.Save(fileName);