Как написать и отредактировать более позднюю строку в строке элемента

70
8

мое приложение генерирует XML файл для получения информации о форме восстановления/сохранения. Когда вы нажимаете кнопку или т.д., Я хочу ее отредактировать. Вот xml-код: Моя форма создает этот xml при загрузке:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Labels>
<label1>
<Internal>
<Text>Label Text</Text>
<Name>label1</Name>
</Internal>
</label1>
</Labels>

Я хочу изменить "Текст ярлыка" после нажатия кнопки, возможно ли это?

спросил(а) 2018-09-15T19:59:00+03:00 2 года назад
1
Решение
80

Я нашел это.

        XmlDocument doc = new XmlDocument();
doc.Load("controls.xml");

XmlNodeList nodes = doc.SelectNodes("/Labels/label1/Internal/Text");
foreach (XmlNode node in nodes)
{
XmlAttribute DateAttribute = node.Attributes["Text"];
node.InnerText = TextBox1.Text;
}
doc.Save("controls.xml");

ответил(а) 2018-09-15T21:06:00+03:00 2 года назад
41

Если вы хотите сохранить мир информации, лучше использовать базу данных или лучше отформатированный XML, но я стараюсь просто ответить на то, что вы просили. Я отредактирую ответ, если получу лучшую информацию о том, какова ваша фактическая цель.

Предположим, что ваш XML находится в строке с именем xml

Если вы знаете старое значение в <text/> вы можете сделать:

var newXml = xml.Replace("<Text>Old Value</Text>","<Text>New Value</Text>");

Если вы этого не сделаете, вы можете использовать

var start = xml.IndexOf("<Text>") + 6;
var end = xml.IndexOf("</Text>");
var oldValue = xml.SubString(start,end-start);
var newXml = xml.Replace($"<Text>{oldValue}</Text>","<Text>New Value</Text>");

Опять же, это упрощенный ответ, и лучшие способы доступны там, что вы хотите сделать.

ответил(а) 2018-09-15T20:14:00+03:00 2 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема