さて私は次の問題を抱えています。
私が持っているhtmlは不正な形式であり、この場合、htmlアジリティパックを使用してノードを選択する際に問題が発生します。
コードは以下のとおりです。
string strHtml = @"
<html>
<div>
<p><strong>Elem_A</strong>String_A1_2 String_A1_2</p>
<p><strong>Elem_B</strong>String_B1_2 String_B1_2</p>
</div>
<div>
<p><strong>Elem_A</strong>String_A2_2 <String_A2_2> asdas</p>
<p><strong>Elem_B</strong>String_B2_2 String_B2_2</p>
</div>
</html>";
HtmlAgilityPack.HtmlDocument objHtmlDocument = new HtmlAgilityPack.HtmlDocument();
objHtmlDocument.LoadHtml(strHtml);
HtmlAgilityPack.HtmlNodeCollection colnodePs = objHtmlDocument.DocumentNode.SelectNodes("//p");
List<string> lststrText = new List<string>();
foreach (HtmlAgilityPack.HtmlNode nodeP in colnodePs)
{
lststrText.Add(nodeP.InnerHtml);
}
問題は、String_A2_2が角かっこで囲まれていることです。
したがって、htmlagility packは、lststrTextで4つではなく5つの文字列を返します。
それで、htmlagilityパックが要素3を次のように返すようにすることは可能
"<strong>Elem_A</strong>String_A2_2 <String_A2_2> asdas"
ですか?
または多分私は要素を閉じるためにいくつかの前処理を行うことができますか?
lststrTextの現在のコンテンツは
lststrText[0] = "<strong>Elem_A</strong>String_A1_2 String_A1_2"
lststrText[1] = "<strong>Elem_B</strong>String_B1_2 String_B1_2"
lststrText[2] = ""
lststrText[3] = ""
lststrText[4] = "<strong>Elem_B</strong>String_B2_2 String_B2_2"