使用XDocument更新特定XML标记的特定值

时间:2016-11-24 10:56:44

标签: c# xml linq-to-xml

我关注XML

<Account>
   <account>
        <userid>4</userid>
        <iban>TR600061200000012990025478</iban>
        <accountno>0000012990025478</accountno>
        <money>
        </money>
        <identityno>78546985462</identityno>
        <birthdate>28.05.1986</birthdate>
        <adress>İstanbul/Üsküdar</adress>
    </account>
</Account>

我想在点击按钮时更新money标记的值。这是我尝试过的

XDocument doc = XDocument.Load(@"XMLFile1.xml");
var node = doc.Descendants("Account").FirstOrDefault(personDetail => personDetail.Element("money").Value==txt.Text);
node.SetElementValue("money", this.txt.Text);
doc.Save(@"XMLFile1.xml");

2 个答案:

答案 0 :(得分:1)

使用XDocument解析xml字符串。找到钱XElement并更新其价值。

public void Button1_Click(object sender, EventArgs e)
{
    XDocument doc = XDocument.Load(@"XMLFile1.xml");

    var result = doc.Root.Descendants("money").FirstOrDefault();

    if (result == null)
       return;

    result.Value = txt.Text;
    doc.Save(@"XMLFile1.xml"); 

}

修改

检查dotNetFiddle

答案 1 :(得分:0)

问题在于您的情况

personDetail => personDetail.Element("money").Value==txt.Text

这只会找到文本已经等于您要应用的文本的节点。

更改文本框中的文本后,将不再有符合此条件的节点 - 并且不会应用新文本。

如果你在条件中使用!=,它会开始变得更好。