2012-08-22 6 views
0

HtmlAgilityPack을 사용하여 테이블 (div)이 포함 된 노드 만 저장하려는 웹 사이트가 있습니다. html 파일. 이 코드를 실험 해 보았습니다 :HtmlAgilityPack을 사용하여 특정 노드를 HTML로 저장

string dashboard = doc.DocumentNode.SelectSingleNode("//div[@id='Dashboard']").InnerHtml; 
doc.LoadHtml(dashboard); 
doc.Save(currDir + "\\dashboardOutputFile.html"); 

그러나 테이블의 텍스트 구성 요소와 레이아웃/표시 정보는 보존되지 않습니다. Doctype 선언을 추가하고 html 및 body 태그를 대시 보드 문자열에 포함 시키려고했지만 효과가 없습니다.

모든 조언을 주시면 감사하겠습니다.

감사합니다.

편집 :

나는 더 명료해야한다. 나는 Render 메서드를 재정 의하여 내 페이지의 HTML을 캡처하고 내 지식 문자열 "대시 보드"의 자부합니다

protected override void Render(HtmlTextWriter writer) 
{ 
    using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new StringWriter())) 
    { 
     base.Render(htmlwriter); 
     string renderedContent = htmlwriter.InnerWriter.ToString(); 

     var doc = new HtmlDocument(); 
     doc.LoadHtml(renderedContent); 

     try 
     { 
      string dashboard = doc.DocumentNode.SelectSingleNode("//div[@id='Dashboard']").InnerHtml; 
      dashboard = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><br><html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body><div><br>" + dashboard + "<br></div></body></html>"; 
      doc.LoadHtml(dashboard); 
      doc.Save(currDir + "\\dashboardOutputFile.html"); 
     } 
     catch (NullReferenceException ex) 
     { 
      // Do nothing. 
     } 
     writer.Write(renderedContent); 
    } 
} 

이 후 완전한 HTML 페이지를 포함해야합니다. 그러나 결과 .html 파일은 다음과 같이 표시됩니다.

INCIDENT MANAGEMENT 
Jun '12 F'12 
Trend F'12 2011 
(avg) 
Severe Incidents (Sev1/2): 2  2 4.16 
Severe Avoidable Incidents (Sev1/2): 1  1.3 1.91 
Incidents (Sev3): 600  459 460.92 
Incidents (Sev4) - No business Impact: 869  782 793 
Proactive Tickets Opened: 24  20 14 
Proactive Tickets Resolved/Closed: 22  17.8 11 
CHANGE MANAGEMENT 
Total Planned Changes: 623  564 583.58 
Change Success Rate (%): 99.9  99.4 99 
Non-Remedial Urgent Changes: 5  11.4 47.08 
PROBLEM MANAGEMENT 
New PIRs: 1  1.4 2 
Closed PIRs: 1  2.3 3 
Overdue Action items: 2  3.4 0 
COMPLIANCE MEASUREMENTS 
    Jun Trend May 
Total Number of Perimeter Devices: 258  242 
Perimeter Devices - Non Compliant: 31  7 
Total Number of Internal Devices: 6632  6521 
Internal Devices - Non Compliant: 160  38 
Unauthorized Perimeter Changes: 0  0 
Unauthorized Internal Changes 0  0 
LEGEND 

ISP LINKS 
June May Trend 
SOC CPO DRP SOC CPO DRP 
39% 35% 74%  38% 35% 73%  
BELL MPLS HEAD ENDS 
June May Trend 
SOC CPO SOC CPO 
8% 5.5% 7% 10% 7.5% 5% 6% 10% 
ENTERPRISE NETWORK (# of issues called out) 
June May Trend 
CORE FW/DMZ CORE FW/DMZ 
1 0 1 0 
US & INTL (# of issues called out) 
June May Trend 
US Intl US Intl 
2 3 2 3 
LINE OF BUSINESS BELL WAN MPLS 
<> 50%-65% >65% <> 50%-65% >65% Trend 
Retail: 2269 4 0 2271 2 0 
Business Banking: 60 0 0 51 1 0 
Wealth: 121 2 1 111 3 2 
Corporate: 49 2 0 51 1 1 
Remote ATM: 280 0 0 279 0 0 
TOOLS 
Version Currency Vulnerability Status Health Status 
Key Messages: 

표 셀의 텍스트 만 표시됩니다. 테이블 레이아웃, 배경색 등이 없습니다. JSFiddle에 파일을 복사 할 때도 이와 같이 표시됩니다. 이 부분을 완전한 HTML 페이지로 만들기 위해 누락 된 부분은 무엇입니까?

+1

* "테이블의 텍스트 구성 요소 만 보존하며 레이아웃/표시 정보는 보존하지 않습니다"*는 무엇을 의미합니까? – Alex

+0

결과 .html 파일은 색상, 그래픽 등으로 표시되지 않습니다. 표 형식으로 대략 정렬 된 셀의 텍스트 데이터입니다. – Kevin

답변

0

원본 HTML에 링크 된 CSS 파일이 다운로드 한 페이지에서 읽을 수 없습니다.

+0

그건 분명히 문제가 아닙니다. 원하지 않는 노드를 하나씩 제거한 다음 doc.Save()를 수행하면 저장되고 표시됩니다. – Kevin

관련 문제