【发布时间】:2015-05-04 21:44:46
【问题描述】:
TL;DR:如果我在 XElement 中有一个 XAttribute 或 NumFruits,我如何将值从 0 递增/更新为 1、2、3... ?
问题:
当我尝试像这样增加 XAttribute 时:
basket.Attribute("numFruits").Value += 1
numFruits 的结果将是 numFruits = 01(因为 0 是初始值),而预期结果应该是 numFruits = 1
不希望在解析结束时添加全局变量,因为可能有很多篮子。
说明:
在 C# Linq to XML 中,可以像这样将XAttributes 添加到XElement。
XElement basket = new XElement("Marys_Basket", new XAttribute("NumFruits", 0);
在示例中,我们使用NumFruits XAttribute 作为计数器来跟踪XDocument 中的水果数量。
当我通过(例如)Fruit 对象列表进行交互时,每个都具有 basket_owner 属性,我通过创建或添加到 XElements 手动将所有这些对象序列化为 XML,在此示例中将是所有者.
由于水果列表不固定,我必须将 Fruit 元素添加到 XElement 并通过首先检查所有者元素是否存在来更新 XAttribute(我已经使用 LINQ 查询并检查它们是否为空),然后将 Fruit XElement 添加为子元素,产生如下内容:
<Root>
<Marys_basket numFruits=2>
<Fruit name="Mango"/>
<Fruit name="Papaya"/>
</Marys_basket>
<Jons_basket numFruits=0 />
<Bobs_basket numFruits=1>
<Fruit name="Apple"/>
</Bobs_basket>
</Root>
这里有一个related question,关于如何增加 XML 元素(在本例中为 XElement),而不是 XAttribute。还有this as well,但不是专门用来增加价值的。
我找到了一种方法(作为答案发布)并且想探索一种更强大的方法来做到这一点。因为我的程序多次这样做。
【问题讨论】:
标签: c# xml linq xelement xattribute