所以,我有一個問題來修改我的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