3

私は文字列を持っています

<div class="TextP">
   <span class="bold" style="font-weight: bold;">bold</span> text 
   <span class="bold" style="font-weight: bold;">italic</span> text 
   <span class="bold" style="font-weight: bold;">underlined</span> text
</div>

これをオブジェクトに解析しXElement、書式設定スパンを他の要素に置き換える必要があります。だから私はこのコードを書いた

//el is the root div
foreach (XElement el in e.Elements())
        {
            switch (el.Name.ToString().ToLower())
            {
                //The method is more complex, but only this part doesnt work, therfore this only case
                case "span":
                    if (el.Attribute("class") != null)
                    {
                        switch (el.Attribute("class").Value)
                        {
                            case "underline" :
                                el.ReplaceWith(XElement.Parse("<U>" + el.Value + "</U>"));
                                break;
                            case "bold":
                                el.ReplaceWith(XElement.Parse("<B>" + el.Value + "</B>"));
                                break;
                            case "italic":
                                el.ReplaceWith(XElement.Parse("<I>" + el.Value + "</I>"));
                                break;
                        }
                    }
                    break;
            }
        }

問題は、最初spanのループを置き換えると foreach ループが壊れ、他の 2 つspansが置き換えられないままになることです。コレクションが変更されたためだと思います.Elements()が、コードをどのように変更すればよいかわかりません。

4

1 に答える 1