2012-05-01 77 views
1

我使用sgmlreader將HTML轉換爲XML。輸出進入一個XmlDocument對象,然後我可以使用InnerText方法從網站中提取純文本。我試圖通過刪除任何javascript來讓文本看起來儘可能乾淨。通過xml循環並刪除任何<script type="text/javascript">很容易,但是當任何jquery或樣式沒有封裝在任何標籤中時,我碰到了一堵磚牆。有人可以幫我嗎?從Xml文檔中刪除jQuery和CSS

示例代碼:

步驟一: 一旦我使用WebClient類下載HTML,我救它,然後打開與文本閱讀類的文件。

第二步: 創建sgmlreader類和輸入流設置爲文本閱讀器:

// setup SGMLReader 
      Sgml.SgmlReader sgmlReader = new Sgml.SgmlReader(); 
      sgmlReader.DocType = "HTML"; 
      sgmlReader.WhitespaceHandling = WhitespaceHandling.All; 
      sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower; 
      sgmlReader.InputStream = reader; 

      // create document 
      doc = new XmlDocument(); 
      doc.PreserveWhitespace = true; 
      doc.XmlResolver = null; 
      doc.Load(sgmlReader); 

步驟三: 一旦我有一個XmlDocument的,我用的是doc.InnerText讓我的純文本。

第四步: 我可以輕鬆去除JavaScript代碼如下所示:

XmlNodeList nodes = document.GetElementsByTagName("text/javascript"); 

       for (int i = nodes.Count - 1; i >= 0; i--) 
       { 
        nodes[i].ParentNode.RemoveChild(nodes[i]); 
       } 

有些東西還是滑過。下面是一個特定的網站輸出示例我正在寫作:

Criminal and Civil Enforcement | Fraud | Office of Inspector General | U.S. Department of Health and Human Services 



#fancybox-right { 
right:-20px; 
} 
#fancybox-left { 
left:-20px; 
} 
#fancybox-right:hover span, #fancybox-right span 
#fancybox-right:hover span, #fancybox-right span { 
left:auto; 
right:0; 
} 
#fancybox-left:hover span, #fancybox-left span 
#fancybox-left:hover span, #fancybox-left span { 
right:auto; 
left:0; 
} 
#fancybox-overlay { 
/* background: url('/connections/images/wc-overlay.png'); */ 
/* background: url('/connections/images/banner.png') center center no-repeat; */ 
} 





$(document).ready(function(){ 

$("a[rel=photo-show]").fancybox({ 
'titlePosition' : 'over', 
'overlayColor' : '#000', 
'overlayOpacity' : 0.9 
}); 

$(".title-under").fancybox({ 
'titlePosition' : 'outside', 
'overlayColor' : '#000', 
'overlayOpacity' : 0.9 
}) 

}); 

需要刪除jquery和樣式。

+0

你能否提供一些你試圖刪除的文本/節點/語法樣本?查看您擁有的任何C#示例也很方便。 –

+0

'document.GetElementsByTagName(「text/javascript」)'正確嗎? MIME類型不是標籤名稱。我想你會得到'script'類型的標籤*和*'@ type =「text/javascript」'。 –

+1

我也很困惑--JQuery和CSS應該包含在