Приложение для экспорта третьей части, которое мы используем, не будет правильно отображать теги абзаца (не включает дополнительную строку между абзацами), поэтому я пытаюсь заменить все теги абзаца на два ярлыка линии с помощью 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 [я] .ParentNode.RemoveChild (paragraphTags [я]);'. Моя версия Html Agility Pack (1.3.0.0) работает с этим. –