обновление внутреннего текста узла xml после изменения значения в datagridview - PullRequest
0 голосов
/ 03 марта 2019

У меня небольшая проблема ... во-первых, я должен прочитать XML-файл и извлечь Arg.2 в сетку данных ... затем я должен обновить значение в сетке данных.наконец, когда я нажимаю кнопку обновления, мне нужно, чтобы это значение снова было записано в 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 голосов
/ 03 марта 2019

Я понял проблему ... это была проблема с Xpath ... поэтому, когда я изменил его на (.//@Arg.2).innertext, он работал нормально.

0 голосов
/ 03 марта 2019

сделайте это, как это, и проверьте проверку как 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
    }

, затем покажите окно сообщения

...