次のようなhtml行があります。
<p>Text<b>bold<i>italic</i>somemore</b>more</p>
これを適切にフォーマットする関数を作成しようとしています。Html Agility Pack を使用しています。これまでの私の機能は次のとおりです。
private void write(ref Word.Range range, HtmlNode node, string style = "")
{
if (node.Name == "p")
{
write(ref range, node.FirstChild);
}
else if (node.Name == "b" || node.Name == "i" || node.Name == "u")
{
switch (node.Name)
{
case "b":
range.Bold = -1;
break;
case "i":
range.Italic = -1;
break;
case "u":
range.Underline = Word.WdUnderline.wdUnderlineSingle;
break;
}
if (node.HasChildNodes) write(ref range, node.FirstChild);
}
else if (node.Name == @"#text")
{
range.Text = node.InnerText;
if (node.NextSibling != null)
{
write(ref range, node.NextSibling);
}
}
}
私が見たところ、最後のelse ifの内部では、範囲の追加、範囲の移動などに取り組む必要があるため、範囲を関数に戻すと正しく機能します。
どんな助けでも大歓迎です。