2012-02-02 4 views
1

현재 InnerText를 추출하는 코드를 사용하고 있습니다. html 행을 주석으로 묶어 놓았습니다. <-- 아래 코드를 사용하여 어떻게 제거합니까?InnerText에서 주석이 달린 줄을 제거합니다.

public static void RemoveComments(HtmlNode node) 
{ 
    foreach (var n in node.ChildNodes.ToArray()) 
     RemoveComments(n); 
    if (node.NodeType == HtmlNodeType.Comment) 
     node.Remove(); 
} 
+0

태그는 질문에 대한 충분한 정보를 제공합니다. 질문 제목에 포함시키지 마십시오. –

+0

의견에 차이가 나는 내부 텍스트를 어떻게 계획합니까? 물론 HTML을 직접 렌더링하지 않으면 다른 HTML 태그도 문제를 일으킬 수 있습니다 (이 경우 주석은 무시됩니다) –

+0

innertext를 mysqlDB에 저장하면 공간이 많이 차지하게되고 더 길어집니다. 텍스트에 대한 기준이 통과하면 수동으로 처리합니다. –

답변

2

This 아마 더 좋은 대답이다.

var rootNode = doc.DocumentNode; 
var query = rootNode.Descendants().OfType<HtmlCommentNode>().ToList(); 
foreach (var comment in query) 
{ 
    comment.Remove(); 
} 
1

그냥 주석 노드에서 노드를 필터링하고 그들을 제거 전화 :

HtmlWeb hwObject = new HtmlWeb(); 
HtmlAgilityPack.HtmlDocument htmldocObject = hwObject.Load(htmlURL); 

foreach (var script in htmldocObject.DocumentNode.Descendants("script").ToArray()) 
    script.Remove(); 
HtmlNode body = htmldocObject.DocumentNode.SelectSingleNode("//body"); 
resultingHTML = body.InnerText.ToString(); 
관련 문제