1

XDocument 内のすべての値を小文字にする必要があります。これを行う最善の方法は何ですか?

明確にするために、ノードの名前を指定せずに、すべてのテキスト値を変更したいと思います。

4

4 に答える 4

7

次のようなこともできます。

doc.Document
   .DescendantNodes()
   .OfType<XText>()
   .ToList().ForEach(x => x.Value = x.Value.ToLower());
于 2013-08-10T06:26:29.150 に答える
0

XMLの例で、属性テキストも変更できます...

string @xml = @"<X:NOTE xmlns:X='http://www.w3.org/1999/xhtml'>
<TO>TOVE</TO>
<FROM>JANI</FROM>
<HEADING>REMINDER</HEADING>
<BODY>DON'T FORGET ME THIS WEEKEND!</BODY>
</X:NOTE>";

var xml2 = XDocument.Parse(xml);
var nodes = xml2.DescendantNodes();

foreach (XNode node in nodes)
{
    XText text = node as XText;

    if (text != null)
    {
        text.Value = text.Value.ToLower();
    }
    else
    {
        // This part if you want to ToLower attributes' values
        XElement element = node as XElement;

        if (element != null)
        {
            foreach (XAttribute attr in element.Attributes())
            {
                attr.Value = attr.Value.ToLower();
            }
        }
    }
}

Console.WriteLine(xml2);
于 2013-08-10T05:58:18.587 に答える