我們使用的第三部分導出應用程序將無法正確呈現段落標籤(不包括段落之間的額外行),所以我試圖用HtmlAgilityPack替換所有帶有兩個換行符標籤的段落標籤。HtmlAgilityPack使用換行符替換段落標籤
這裏是我迄今爲止...
// Shortened for this example
string rawHtml = "<p><strong><span>1.0 Purpose</span></strong></p><p><span>The role</span></p><p><span>NOTE: Defined...</span></p>";
HtmlDocument doc = new HtmlDocument();
HtmlNode.ElementsFlags["br"] = HtmlElementFlag.Empty;
doc.LoadHtml(rawHtml);
doc.OptionWriteEmptyNodes = true;
// Updated using suggestion from Petr
HtmlNode linebreak = doc.CreateElement("br");
var paragraphTags = doc.DocumentNode.SelectNodes("p");
for (int i = 0; i < paragraphTags.Count; i++)
{
HtmlNode childNode = HtmlNode.CreateNode(paragraphTags[i].InnerHtml);
HtmlNode nextNode = paragraphTags[i];
if (i > 0)
{
nextNode = doc.DocumentNode.InsertAfter(linebreak, nextNode);
nextNode = doc.DocumentNode.InsertAfter(linebreak, nextNode);
}
doc.DocumentNode.InsertAfter(childNode, nextNode);
paragraphTags[i].Remove();
}
它確實刪除段落標記,但只呈現一個換行符。我已經在互聯網上搜索到儘可能遠的地方,但似乎沒有任何工作。
OuterHtml看起來是這樣的....
<strong><span>1.0 Purpose</span></strong><br /><span>The role</span><br /><span>NOTE: Defined...</span>
任何想法,我做錯了什麼? 我覺得那裏有一個更簡單的方法,是嗎?
你可以嘗試更換'paragraphTags [I]一個.remove();''通過paragraphTags [I] .ParentNode.RemoveChild(paragraphTags [1]);'。我的Html Agility Pack版本(1.3.0.0)適用於此。 –