1
私はこのような入力HTMLがすべきAngleSharpでHTMLパーサーを書いています文書全体を読む関数:HTMLパーサIElementのテキストは
using AngleSharp.Dom;
using AngleSharp.Dom.Html;
using AngleSharp.Extensions;
using AngleSharp.Parser.Html;
private void processHTMLNode(IElement node, IElement targetNode)
{
switch (node.NodeName.ToLower())
{
//...
case "a":
if(node.HasAttribute("href") && node.GetAttribute("href").StartsWith("#"))
{
break;
}
var aNew = outputDocument.CreateElement("a");
aNew.SetAttribute("href", node.GetAttribute("href"));
aNew.TextContent = node.TextContent;
targetNode.AppendChild(aNew);
break;
case "p":
var pNew = outputDocument.CreateElement<IHtmlParagraphElement>();
foreach (var childNode in node.Children)
{
processHTMLNode(childNode, pNew);
}
//TODO fix this
pNew.TextContent = node.TextContent;
targetNode.AppendChild(pNew);
break;
}
//...
}
問題は、その設定は、TextContent
属性はa
-p
-Nodeの子である要素を上書きします。また、注文(テキスト - >リンク - >テキスト)は失われます。
これを正しく実装するにはどうすればよいですか?