Изменение двух полей в файле .XML - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть XML-файл, который выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<UFCC xmlns="http://actel.com/sweng/afi">
  <Region name="Region_0_0">
    <content>
     <static_data>
     <fixed>
        <value>11111111111111111111111111111111</value>
        <type>HEX</type>
      </fixed>
      </static_data>
  </content>
    <region_start_word>0</region_start_word>
    <number_of_word>16</number_of_word>
    <simulation_value>
      <value>11111111111111111111111111111111</value>
      <type>HEX</type>
    </simulation_value>
  </Region>
  <Region name="Region_1_0">
    <content>
      <static_data>
      <fixed>
        <value>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</value>
        <type>HEX</type>
      </fixed>
      </static_data>
    </content>
      <region_start_word>16</region_start_word>
      <number_of_word>16</number_of_word>
    <simulation_value>
      <value>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</value>
      <type>HEX</type>
    </simulation_value>
  </Region>
  <Program_Pages/>
</UFCC>

Я пытаюсь изменить поля значений "11111111111111111111111111111111" на "A ... A".Я пробовал это с Xml.Linq и используя примеры, найденные в сети, из которых, похоже, ничего не работает.

Как я могу изменить эти поля?

Извините за форматирование, я не настолько знаком с правильным форматированием XML, и исходный файл записан в одну строку.

1 Ответ

0 голосов
/ 24 сентября 2019

Вам необходимо использовать пространство имен:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XElement root = doc.Root;
            XNamespace ns = root.GetDefaultNamespace();

            List<XElement> values1s = doc.Descendants(ns + "value").Where(x => (string)x == "11111111111111111111111111111111").ToList();

            foreach (XElement x in values1s)
            {
                x.SetValue(((string)x).Replace("1", "A"));
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...