Я изменил структуру файла d xml. я хочу изменить значение visible
Я хочу отредактировать xml-файл
comment
Вам нужно расширить этот вопрос с помощью образца XML (до и после изменения), чтобы получить достойный ответ.
- person Steve Townsend   schedule 17.11.2010
comment
Предоставленный образец XML недействителен. Теги c и d не имеют закрывающей скобки.
- person Scott Markwell   schedule 17.11.2010
comment
@ Скотт - и второй «б» нет
- person KevinDTimm   schedule 17.11.2010
comment
это пример структуры, проблема в том, что я не могу изменить значение атрибута с aaa на bb
- person user428747   schedule 17.11.2010
comment
@user428747: user428747: Это не пример действительного XML-файла, из-за чего трудно сказать, как будет выглядеть правильный файл.
- person Jon Skeet   schedule 17.11.2010
Ответы (2)
Вы можете использовать такой шаблон кода:
bool foobar()
{
XmlDocument doc = new XmlDocument();
try
{
doc.Load(FileName);
XmlNodeList ns = doc.SelectNodes("a/d/e/f");
if (ns.Count == 1)
{
ns[0].Attributes["visible"].Value = true;
doc.Save(FileName);
return (true);
}
else
return (false);
}
catch (Exception e)
{
return (false);
}
}
person
texnedo
schedule
17.11.2010
Использование true/false вместо исключений — это весьма неидиоматический (и с потерями) способ указать на успех или неудачу в .NET. Исключения существуют не просто так - используйте их!
- person Jon Skeet; 18.11.2010
Вы имеете в виду, что я должен заполнить исключение для родительского кода? А что с производительностью в этой ситуации?
- person texnedo; 19.11.2010
Итак, LINQ to XML позволяет очень легко манипулировать XML-документами, при условии, что они достаточно малы для разумной загрузки в память.
Например:
var doc = XDocument.Load("Foo.xml");
foreach (var element in doc.Descendants("c"))
{
element.SetAttributeValue("value", "bb");
}
doc.Save("Bar.xml");
Теперь это установит атрибут value
для каждого элемента c
. Непонятно, хотите ли вы этого. Если это не так, отредактируйте свой вопрос, чтобы сделать его более конкретным.
person
Jon Skeet
schedule
17.11.2010
На самом деле, чтобы он работал (SetAttribute не существует), используйте этот код: element.SetAttributeValue(value, bb);
- person SwissCoder; 23.11.2010
Невероятно, я нашел ошибку Джона Скита :)
- person SwissCoder; 23.11.2010