2008-10-23 5 views
5

geçerli:DOM'u C# içindeki bir dizgeden nasıl değiştirebilirim? an ı HTML bulunabilir bir dizeden DOM manipüle edebilmek için bulduk iyi yolu için

WebBrowser webControl = new WebBrowser(); 
webControl.DocumentText = html; 
HtmlDocument doc = webControl.Document; 

iki sorun vardır:

  1. WebBrowser nesneyi gerektirir!
  2. Bu, birden fazla iş parçacığı ile kullanılamaz; Farklı iş parçacığı üzerinde çalışacak bir şeye ihtiyacım var (ana iş parçacığı dışında).

Herhangi bir fikir?

+0

http://msdn.microsoft.com /en-us/library/aa290341%28v=vs.71%29.aspx – ThunderGr

cevap

16

HTML için GooglePlex'te bir arama yaptım ve Html Agility Pack buldum. Bunun olup olmadığını bilmiyorum, hemen şimdi deneyin.

+1

Html Agility Pack harika –

+0

Ditto - Aslında belgeyi iyi bir şekle dönüştürmek için HTML Tidy'i kullanmanızı öneriyorum ve bir XmlDocument haline getirdim, ancak belki de bunu HTML Çeviklik Paketi ile atlayabilirsiniz. İyi şeyler. –

+0

Çeviklik paketi, HTML ve thread ile sorunsuz çalışıyor! Cevabımı aldım! Hepiniz Thx!HtmlAgilityPack için –

6

Eğer (belki bize daha ayrıntılı bilgi verebilir?) Yapmaya çalışıyor ve HTML iyi biçimlendirilmiş olup olmadığını bağlı olarak ne bağlı olarak, bir XmlDocument bu dönüştürebilirsiniz:

System.Xml.XmlDocument x = new System.Xml.XmlDocument(); 
x.LoadXml(html); // as long as html is well-formed, i.e. XHTML 

Daha sonra, WebBrowser örneği olmadan kolayca işleyebilirsiniz. Konulara gelince, o bölümün cevabını bilmek için XmlDocument'un uygulanması hakkında yeterli bilgi sahibi değilim. Belge doğru biçimde değilse


, önce şekil almak için NTidy (HTML Tidy için .NET sarmalayıcı) de kullanabilir; Bunu bir kez bir proje için yapmak zorunda kaldım ve gerçekten de çok kötü değildi.

+0

Belge iyi biçimlendirilmemiş olabilir, bu nedenle XmlDocument neden çalışmayabilir, ancak alternatifi takdir ediyorum. –

5

JasonBunting zaten bunu yayınladı, ancak HTML düzenli olarak bir. Net sarıcı kullanmak ve XmlDocument içine yüklemek için çalışır.

Bunu daha önce .net sarmalayıcı kullandık

:

http://www.codeproject.com/KB/cs/ZetaHtmlTidy.aspx

Ve böyle biraz bunu uyguladıkları: repost :) görüldüğü takdirde

string input = "<p>crappy html<br <img src=foo></div>"; 
HtmlTidy tidy = new HtmlTidy() 
string output = tidy.CleanHtml(input, HtmlTidyOptions.ConvertToXhtml); 
XmlDocument doc = new XmlDocument(); 
doc.LoadXml(output); 

Maalesef

1

This is an eski soru Şimdi vardır:

İlgili konular