2011-02-23 7 views
5

나는 위대한 인 태그를 제거 할 수 있습니다 정규식을 본 적이 있지만 나는 또한 이것은 HTML 파일에서 실제로하지문자열에서 모든 HTML을 제거 하시겠습니까?

  

같은 물건을 가지고있다. 사실 그것은 문자열에서 온 것입니다. 나는 나에게 사용자가 사용할 수있는 HTML을 제공하는 SharePoint 웹 서비스에서 데이터를 잡아 당기는거야/그래서, 8-20 열 각각 100-900 행을 구문 분석하고 있습니다

<div>Hello! Please remember to clean the break room!!! &quot;bob&quote; <BR> </div> 

처럼 생성 얻을.

+4

필수 링크 : http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – thecoop

답변

9

HTML Agility Pack을 살펴보면 문서의 HTML 노드에서 InnerText을 추출하는 데 사용할 수있는 HTML 파서입니다.

여기에 pointedoutmany times으로되어 있기 때문에 HTML 구문 분석을 정규 표현식으로 신뢰할 수 없습니다. 극히 제한된 작업의 경우 적절한 것으로 간주 될 수있는 경우가 있습니다. 그러나 일반적으로 HTML은 너무 복잡하고 부정확 한 경향이 있습니다. Bad things can happen when you try to parse HTML with Regular Expressions.

HAP과 같은 파서를 사용하면 유연성이 훨씬 향상됩니다. 경우에 당신은 특정 노드에만 관심 또는 노드 세트, 또한 문서에 XPATH 쿼리를 수행 할 수 있습니다

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.Load("path to your HTML document"); 

StringBuilder content = new StringBuilder(); 
foreach (var node in doc.DocumentNode.DescendantNodesAndSelf()) 
{ 
    if (!node.HasChildNodes) 
    { 
     sb.AppendLine(node.InnerText); 
    } 
} 

:이 작업을 위해 사용하는 모양에 대한 A (거친) 예 :

var nodes = doc.DocumentNode.SelectNodes("your XPATH query here"); 

희망이 있습니다.

+0

사용 방법을 보여주는 실제 코드를 제공 할 수 있습니까? 작업을 수행하는 데 필요한가? – dtb

+0

@dtb 물론입니다. – Donut

관련 문제