【发布时间】:2019-03-15 11:41:20
【问题描述】:
我有这个 XML:
<Meals>
<Meal>
<Food course="starter">Soup</Food>
<Food course="mains">Fish</Food>
<Food course="dessert">Ice cream</Food>
</Meal>
<Meal>
<Food course="starter">Soup</Food>
<Food course="mains">Chicken</Food>
<Food course="dessert">Cheese</Food>
</Meal>
<Meal>
<Food course="starter">Melon</Food>
<Food course="mains">lamb</Food>
<Food course="dessert">Ice cream</Food>
</Meal>
</Meals>
还有这个 XPath 表达式:
//Food[@course='dessert' and text() = 'Ice cream']
这可以找到冰淇淋的每一道甜点。我想在每个匹配元素之后添加一个新元素,如下所示:
<Meals>
<Meal>
<Food course="starter">Soup</Food>
<Food course="mains">Fish</Food>
<Food course="dessert">Ice cream</Food>
<Review>enjoyed</Food>
</Meal>
<Meal>
<Food course="starter">Soup</Food>
<Food course="mains">Chicken</Food>
<Food course="dessert">Cheese</Food>
</Meal>
<Meal>
<Food course="starter">Melon</Food>
<Food course="mains">lamb</Food>
<Food course="dessert">Ice cream</Food>
<Review>enjoyed</Food>
</Meal>
</Meals>
在给定 XPath 表达式的情况下,我如何在 C# 中执行此操作?表达式可能会改变(例如选择 mains),并且 XML 的结构也可能会有所不同。无论如何,必须在每个匹配元素之后插入一个新元素。
我知道 XElement 上有一个 AddAfterSelf 方法,但我不知道如何在 XPath 表达式可能返回的 XElement 集合上使用它。
【问题讨论】: