2012-07-03 4 views
0

CMS 생성 HTML 페이지를 구문 분석하고 "Example"이라는 이름 특성을 가진 자식 노드가있는 HTMLAgiligyPack 노드 주위에 목록 항목 태그를 추가해야합니다.HTMLAgilityPack 노드에 HTML 태그 추가

C# 코드

HtmlDocument doc = new HtmlDocument(); 
doc.Load("test.htm"); 
foreach (HtmlNode docObjects in doc.DocumentNode.SelectNodes("//object[@type='text/sitemap']")) 
{ 
    HtmlNodeCollection paramNodes = docObjects.ChildNodes; 
    foreach (HtmlNode paramNode in paramNodes) 
    { 
    string paramName = paramNode.GetAttributeValue("name", null); 
    string paramValue = paramNode.GetAttributeValue("value", null); 
    HtmlNode findItem = paramNode.NextSibling; 
    if (paramName == "Example") 
    { 
    //Add listitem (<li>) tags to the paramName node 
    } 
    } 
} 

test.htm을

<OBJECT type="text/sitemap"> 
    <param name="Example" value="Help.chm::\toc.hhc"> 
</OBJECT> 
<OBJECT type="text/sitemap"> 
    <param name="Example" value="Help2.chm::\toc.hhc"> 
</OBJECT> 
<OBJECT type="text/sitemap"> 
    <param name="Example" value="Help3.chm.chm::\toc.hhc"> 
</OBJECT> 

요구

<li><OBJECT type="text/sitemap"> 
    <param name="Example" value="Help.chm::\testing.htm"> 
</OBJECT></li> 
<li><OBJECT type="text/sitemap"> 
    <param name="Example" value="Help2.chm::\testing.htm"> 
</OBJECT></li> 
<li><OBJECT type="text/sitemap"> 
    <param name="Example" value="Help3.chm::\testing.htm"> 
</OBJECT></li> 

이 크게 감사하겠습니다 제공 할 수있는 모든 도움이 될 수 있습니다. 이것은 내가 작업하고있는 더 큰 프로젝트의 일부이며 미래에 도움을 요청할 가능성이 높습니다. 다시 C#으로 충돌 과정이 필요합니다.

+0

또한, 당신의 당신이 원하는 것을 설명하고 서로 동의하지 않는 게시 된 예. – Oded

답변

0

여기에 한 가지 방법 (코드가 if 절에서 이동)입니다 :

var objectNode = paramNode.ParentNode; 
var li = doc.CreateElement("li"); 
objectNode.Remove(); 
li.AppendChild(objectNode); 

doc.DocumentNode.AppendChild(li); 
+0

그게 효과가! 코드가 두 번 실행되면 HAP이 완전히 비어있는 li 태그 세트를 생성하는 것처럼 보입니다. 또한 잘못된 서식을 사용하는 CMS 생성 listitems의 닫기 태그를 만들려고 시도하지만 닫는 태그는 필요 없습니다. HAP의 자동 종료 태그 생성을 중지 할 수 있습니까? – Techknowfile

관련 문제