更改datagridview中的值后更新xml节点的内部文本

时间:2019-03-02 21:37:27

标签: c# xmlnode

我有一个小问题...首先,我必须读取xml文件并在datagridview中提取Arg.2 ...然后我必须更新datagrid中的值。最后,当按下更新按钮时,我需要将此值再次写入Arg.2并使用新名称保存xml文件。

在提取和在消息框中更新时,我可以读取该值,但在xml文件中看不到它...请让我知道出了什么问题。

下面是button_click下的代码:

    openFileDialog1.ShowDialog();
                XmlDocument Newdoc = new XmlDocument();
                Newdoc.Load(openFileDialog1.FileName);

                w = dataGridView1.Rows[0].Cells["Arg2"].Value.ToString();
                Newdoc.SelectSingleNode(".//event[@type='2VO']/properties/media[@Arg2]").InnerText = w;
                MessageBox.Show(Newdoc.SelectSingleNode(".//event[@type='2VO']/properties/media[@Arg2]").InnerText);

Newdoc.Save(@"C:\download\updatedxml.xml");

奇怪的是,当检查新的updatedxml文件时,我看到该值正在一个非常奇怪的位置被更新...请参阅下文(2100位置):

<event type="2VO">
          <properties>
            <schedule startType="-ParentEnd" startOffset="00:00:33:00" endType="Duration" endOffset="00:00:22:00" />
            <event title="Pixel VO" reconcileKey="106251137" />
            <mediaStream>
              <cg type="PIXEL CG" />
              <allocation type="ListStream">
                <listStream type="Fixed" listStreamNo="0" />
              </allocation>
            </mediaStream>
            <media RuleCode="2VO" Arg1="TUE" Arg2="1940" Arg3="O1T13810" Arg4="" Arg5="" Arg6="" Arg7="" Arg8="">2100</media>

这不是所需的位置...我的Xpath有什么问题吗?

2 个答案:

答案 0 :(得分:0)

这样做并检查 node exist 之类的验证,或者不检查您的XPath

  try 
    {          
    XmlDocument doc = new XmlDocument();
    doc.Load(yourDoc); //load youe xml doc
    doc.SelectSingleNode("your node").InnerText = "new text";//select your node which you want to update
    doc .Save(@"C:\download\updatedxml.xml");
//then show your message box
    }
    catch(exception ex)
    {
       //catch  exception here
    }

然后显示您的消息框

答案 1 :(得分:0)

我发现了问题... Xpath有问题...因此,当我将其修改为(.//@Arg.2).innertext时,它工作正常。