2012-05-01 2 views
1

Я использую sgmlreader для преобразования HTML в XML. Выход идет в объект XmlDocument, который затем я могу использовать метод InnerText для извлечения простого текста с веб-сайта. Я пытаюсь заставить текст выглядеть максимально чистым, удалив любой javascript. Зацикливание через xml и удаление любого <script type="text/javascript"> достаточно просто, но я ударил кирпичную стену, когда какой-либо jquery или стиль не инкапсулирован ни в какие теги. Кто-нибудь может мне помочь?Удаление jquery и CSS из документа Xml

Пример кода:

Шаг один: После того, как я использую класс 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]); 
       } 

Некоторые вещи еще проскальзывает. Heres пример для одного вывода конкретного сайта я scriping:

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 должны содержаться в узлах

Смежные вопросы