TL;DR:如果我有一个XAttribute
of NumFruits
in an XElement
,我如何将值从 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
的对象来手动将所有这些对象序列化为 XML 。XElements
由于水果列表不固定,我必须将 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>
这是关于如何增加 XML 元素(在本例中为 XElement)而不是 XAttribute的相关问题。这也是如此,但不是专门为了增加价值。
我找到了一种方法(作为答案发布)并且想探索一种更强大的方法来做到这一点。因为我的程序多次这样做。