2011-05-09 3 views
6

h1 태그를 모두 h2 태그로 바꾸려고하고 있는데 HtmlAgility 팩을 사용하고 있습니다. HtmlAgility에서 태그 바꾸기

내가이 짓 :

var headers = doc.DocumentNode.SelectNodes("//h1"); 
if (headers != null) 
{ 
    foreach (HtmlNode item in headers) 
    { 
     //item.Replace?? 
    } 
} 

을하고 내가 거기에 붙어있어. 내가 어떻게 새로운 수소를 만드는 아무 생각이 없다가

var headers = doc.DocumentNode.SelectNodes("//h1"); 
if (headers != null) 
{ 
    foreach (HtmlNode item in headers) 
    { 
     HtmlNode newNode = new HtmlNode(HtmlNodeType.Element, doc, item.StreamPosition); 
     newNode.InnerHtml = item.InnerHtml; 
     // newNode suppose to set to h2 
     item.ParentNode.ReplaceChild(newNode, item); 
    } 
} 

문제가 얻을 수있는 모든 속성 등 확실 프로그래머에게 않도록하는 간단한 방법이야, 어떤 아이디어 :이 시도했습니다?

답변

9
var headers = doc.DocumentNode.SelectNodes("//h1"); 
     if (headers != null) 
     { 
      foreach (HtmlNode item in headers) 
      { 
       item.Name = "h2" 
      } 
     } 
+0

이 HtmlAgilityPack .. 모두를 강제 할 수있는 방법 따옴표로 감싸 속성이 탐험 내 모험을 계속? 'OptionOutputOptimizeAttributeValues'를 찾았지만 그냥 모든 인용 부호를 제거합니다 .. –

+0

잘 모르겠습니다. HtmlAgilityPack 공식 포럼에 문의하십시오. http://htmlagilitypack.codeplex.com/discussions – VikciaR

1

SelectNodes 대신 자손을 사용하여 태그를 교체 유사한 방법 :

IEnumerable<HtmlNode> tagDescendants = doc.DocumentNode.Descendants("h1"); 
foreach (HtmlNode htmlNode in tagDescendants) 
{ 
    htmlNode.Name = "h2"; 
} 
관련 문제