所以,我有一个问题来修改我的XML文档。这是我的XML用c修改XML元素#
<CookBook>
<Recipe id="1">
<Title>Best recipe</Title>
<Category>...</Category>
<Description>Some text</Description>
<Amount>10</Amount>
<Ingredient>
<li>Ingredient 1</li>
<li>Ingredient 2</li>
</Ingredient>
<RecipeText>
<li>Step 1</li>
<li>Step 2</li>
<li>Step 3</li>
</RecipeText>
</Recipe>
<Recipe id="2">
<Title>Best recipe2</Title>
<Category>...</Category>
<Description>Some text</Description>
<Amount>10</Amount>
<Ingredient>
<li>Ingredient 1</li>
<li>Ingredient 2</li>
<li>Ingredient 3</li>
</Ingredient>
<RecipeText>
<li>heat the oven</li>
<li>Do something</li>
<li>Do something</li>
</RecipeText>
</Recipe>
</CookBook>
所以我需要更新Ingredient元素内部的特定配方的li元素。但我真的不知道如何...我有一个成分列表,其中包含我想要的XML的值。
foreach (var item in lvAddIngredient.Items)
{
string text = item.ToString();
ingredients.Add(text);
}
当我创建一个新的配方我使用此代码
var doc = XDocument.Load("recipeXML.xml");
var newElement = new XElement("Recipe", new XAttribute("id", id.ToString()),
new XElement("Title", txtTitle.Text),
new XElement("Category", selectedCategory.ToString()),
new XElement("Description", txtDescription.Text),
new XElement("Amount", txtAmount.Text),
new XElement("Ingredient", ingredients.Select(text => new XElement("li", text))),
new XElement("RecipeText", recipeText.Select(text => new XElement("li", text))));
doc.Element("CookBook").Add(newElement);
doc.Save("recipeXML.xml");
但我不知道如何更新这些li元素值。我试过这样的东西,但语法错了。
var xdoc = XDocument.Load("recipeXML.xml");
string id = lbRecipes.SelectedValue.ToString();
var items = from item in xdoc.Descendants("Recipe")
where item.Attribute("id").Value == id
select item;
foreach (XElement ele in items)
{
ele.SetElementValue("Title", txtTitle.Text);
ele.SetElementValue("Category",cbAddCategory.Text);
ele.SetElementValue("Amount", txtAmount.Text);
ele.SetElementValue("Description", txtDescription.Text);
ele.SetElementValue("Ingredient", ingredients.Select(text => ele.SetElementValue("li", text)));
}
当你最初创建的DOM,你使用'ingredients.Select(文=>新的XElement( “礼”,文本))'的'Ingredient'元素的内容。那么为什么当你想要修改那个元素时你不使用完全相同的语法?你的问题很不清楚。请提供一个很好的[mcve],它可以可靠地再现你遇到的任何问题,并精确描述这个问题是什么:代码现在做了什么,以及你希望它做什么? –
列表 ingrediants = ele.Element(“Ingredient”)。Elements(“li”)。ToList(); ingrediants [0] .Value = 1234; –
jdweng