<?xml version="1.0"?>
<Image>
<Overview>13</Overview>
<Gallery1>1</Gallery1>
<Gallery2>4</Gallery2>
<Gallery3>6</Gallery3>
<Gallery4>1</Gallery4>
</Image>
这是我的xml文件。 我有一个带值的下拉值(gallery1,gallery2,gallery3等)。 如果用户在文本框中选择gallery2并键入5 然后单击确定按钮,然后我需要加载上面的XML文件并检查我们需要更新的库值。但首先我们需要从XML中获取值。
这里我试图更新gallery2所以首先我需要获取gallery2值(4) 然后使用旧值(5 + 4 = 9)添加新值,然后保存。所以现在gallery2将包含值9。
结果
<?xml version="1.0"?>
<Image>
<Overview>13</Overview>
<Gallery1>1</Gallery1>
**<Gallery2>9</Gallery2>**
<Gallery3>6</Gallery3>
<Gallery4>1</Gallery4>
</Image>
答案 0 :(得分:1)
我认为你在寻找的是
protected void Button12_Click(object sender, EventArgs e)
{
lbl = GetLabel(275, 20);
//Declare and load new XmlDocument
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(MapPath("XmlSample.xml"));
//delete a mode
XmlNode node;
node = xmlDoc.SelectSingleNode("//Image");
node.ParentNode.RemoveChild(node);
//create a node and add it
XmlElement newElement =
xmlDoc.CreateElement("myNewElement");
node = xmlDoc.SelectSingleNode("//Image");
node.ParentNode.InsertAfter(newElement, node);
xmlDoc.Save(MapPath("XmlSampleModified.xml"));
}
答案 1 :(得分:0)
此方法的更通用版本会将整个XPath带到您想要更改的元素,而不是仅仅假设它是顶级Image
元素的子元素。
private void AddElementValue(XmlDocument doc, string tagName, int valueToAdd)
{
XmlElement elm = doc.SelectSingleElement("/Image/" + tagName);
Debug.Assert(elm != null, "Didn't find " + tagName);
int currentValue;
if (int.TryParse(elm.InnerText, out currentValue))
{
elm.InnerText = (currentValue + valueToAdd).ToString();
return;
}
Debug.Fail(elm.InnerText + " can't be parsed as an integer.");
}