UpperCase все значения элемента Xml с LINQ - PullRequest
2 голосов
/ 16 марта 2011

У меня есть XDocument с несколькими элементами / дочерними элементами и т. Д., И я хотел бы сделать Значение каждого элемента UpperCase.

doc.Descendants().ToList().ForEach(f => f.Value = f.Value.ToUpper());

не работает, потому что объединяет ВСЕ значения (как верхние) в родительский элемент.

Ответы [ 2 ]

2 голосов
/ 16 марта 2011

Выражения LINQ обычно не должны изменять значение источника.Они должны возвращать только новые значения (воспринимайте их как фильтр ... Вы вставляете что-то, получается что-то другое)

0 голосов
/ 16 марта 2011

Я решил это так - не уверен, что он лучший, но он работает.

private void btnConvert_Click(object sender, EventArgs e)
    {
        XDocument doc = XDocument.Parse(txtXml.Text);
        ProcessElement(doc.Elements().First());
        txtXml.Text = doc.ToString(SaveOptions.DisableFormatting);
    }

    private void ProcessElement(XElement element)
    {
        if (element.HasElements)
            element.Elements().ToList().ForEach(e => ProcessElement(e));
        else
            element.Value = element.Value.ToUpper();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...