私は文字列を持っています
<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()
が、コードをどのように変更すればよいかわかりません。