HTML to język znaczników, który jest powszechnie używany w witrynach internetowych, aplikacjach internetowych itp. Zawartość w HTML jest rozróżniana za pomocą różnych tagów. Możesz łatwo przekonwertować kod HTML na zwykły tekst przy użyciu języka C#, ignorując znaczniki otwierające i zamykające. Podobnie, mogą istnieć specyfikacje kaskadowych arkuszy stylów, JavaScript lub dowolna inna sekcja HTML zgodnie z Twoimi wymaganiami. Dlatego jest to jak wyodrębnianie tekstu z dokumentu HTML. Przejdźmy przez następującą sekcję, aby uzyskać szczegółowe informacje:
- Konwerter HTML na zwykły tekst w C#
- Konwertuj HTML na plik tekstowy za pomocą INodeIterator w C#
- Wyodrębnij tekst z HTML z różnymi podejściami przy użyciu C#
- Konwertuj HTML strony internetowej URL na tekst za pomocą C#
Konwerter HTML na zwykły tekst w C#
Możesz przekonwertować HTML na zwykły tekst za pomocą Aspose.HTML for .NET API. Można go łatwo skonfigurować w środowisku opartym na .NET Framework za pomocą następującego polecenia instalacyjnego NuGet:
PM> Install-Package Aspose.Html
Konwertuj HTML na plik tekstowy za pomocą INodeIterator w C#
Aspose.HTML for .NET API jest oparty na DOM (Document Object Model), więc możesz iterować przez różne węzły API za pomocą interfejsu INodeIterator. Podobnie daje kontrolę nad definiowaniem NodeFilter i nadpisywaniem metod filtrowania zawartości. Możesz zignorować styl, skrypt lub dowolny inny element w pliku HTML, aby wybrać z niego tylko ciąg tekstowy. Poniżej przedstawiono kroki konwersji HTML na zwykły plik TXT przy użyciu języka C#:
- Przeczytaj wejściowy plik HTML
- Zainicjuj instancję iteratora węzła
- Utwórz instancję INodeIterator.
- Sprawdź filtr stylu
- Odczytaj wartość węzła w łańcuchu
- Napisz zawartość tekstową HTML jako plik TXT
Poniższy kod pokazuje, jak przekonwertować plik HTML na zwykły plik tekstowy przy użyciu języka C#:
String content = File.ReadAllText(dataDir + "Test2.html");
// Utwórz instancję dokumentu HTML
using (var document = new HTMLDocument(content, ""))
{
// Pierwszy sposób zbierania elementów tekstowych z dokumentu
// Zainicjuj instancję iteratora węzła
Aspose.Html.Dom.Traversal.INodeIterator iterator = document.CreateNodeIterator(document, Aspose.Html.Dom.Traversal.Filters.NodeFilter.SHOW_TEXT, new StyleFilter());
StringBuilder sb = new StringBuilder();
Aspose.Html.Dom.Node node;
while ((node = iterator.NextNode()) != null)
sb.Append(node.NodeValue);
Console.WriteLine(sb.ToString());
File.WriteAllText(@"NodeIterator.txt", sb.ToString());
}
///<summary>
/// Reprezentuje filtr użytkownika utworzony w celu zignorowania zawartości elementu „style” i „script”.
///</summary>
class StyleFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
public override short AcceptNode(Aspose.Html.Dom.Node n)
{
//Jeśli chcesz pominąć jakiś element, napisz jego nazwę dużymi literami
return (n.ParentElement.TagName == "STYLE" || n.ParentElement.TagName == "SCRIPT" ? FILTER_REJECT : FILTER_ACCEPT);
}
}
Wyodrębnij tekst z HTML z różnymi podejściami przy użyciu C#
Nauczyliśmy się konwertować HTML na tekst za pomocą INodeIterator. Podobnie, istnieje kilka innych podejść do spełnienia tych wymagań. Możesz utworzyć niestandardową metodę wyodrębniania tekstu lub pracować z właściwością TextContent, jak wyjaśniono w poniższych krokach:
- Załaduj wejściowy dokument HTML
- Zdefiniuj metodę zdefiniowaną przez użytkownika
- Sprawdź każdy NodeType, aby zobaczyć, czy jest to węzeł elementu, czy węzeł tekstowy
- Pobierz elementy tekstowe za pomocą właściwości TextContent.
- Zapisz wyjściowy plik TXT
Poniższy fragment kodu wyjaśnia te dwa różne podejścia do konwersji HTML na zwykły tekst w języku C#:
String text = "";
String content = File.ReadAllText(dataDir + "Test2.html");
// Utwórz instancję dokumentu HTML
var document = new HTMLDocument(content, "");
// Drugi sposób zbierania elementów tekstowych z dokumentu metodą niestandardową
text = GetContent(document.Body);
File.WriteAllText("Test.txt", text);
// Trzeci sposób zbierania elementów tekstowych z dokumentu za pomocą właściwości TextContent
text = document.Body.TextContent;
File.WriteAllText("Test.txt", text);
static string GetContent(Aspose.Html.Dom.Node node)
{
StringBuilder sb = new StringBuilder();
foreach (var n in node.ChildNodes)
{
if (n.NodeType == Aspose.Html.Dom.Node.ELEMENT_NODE)
sb.Append(GetContent(n));
else if (n.NodeType == Aspose.Html.Dom.Node.TEXT_NODE)
sb.Append(n.NodeValue);
}
return sb.ToString();
}
Konwertuj HTML strony internetowej URL na tekst za pomocą C#
Omówiliśmy już konwersję HTML strony internetowej offline na tekst, w której plik HTML musi istnieć, pobierając go na dysk. Przejdźmy o krok dalej, gdzie nie trzeba nawet zapisywać pliku HTML na dysku. Możesz bezpośrednio przekonwertować stronę internetową, określając jej adres URL, do pliku TXT przy użyciu języka C#. Na przykład przekonwertujmy stronę produktu Aspose.HTML for .NET API do pliku TXT, wykonując poniższe czynności:
- Zainicjuj obiekt HTMLDocument i podaj adres URL
- Przeczytaj zawartość tekstową formatu HTML
- Napisz plik TXT z wyodrębnionym tekstem ze strony internetowej
Poniższy kod pokazuje, jak przekonwertować adres URL strony HTML na tekst za pomocą języka C#:
// Zainicjuj obiekt HTMLDocument za pomocą adresu URL
HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net");
// Przeczytaj zawartość tekstową formatu HTML
String text = document.Body.TextContent;
// Napisz plik TXT z wyodrębnionym tekstem
File.WriteAllText("Webpage.txt", text);
Wniosek
W tym artykule omówiliśmy, jak konwertować pliki HTML na zwykły tekst, wyodrębniać tekst z HTML, a także adres URL strony internetowej online do formatu pliku TXT przy użyciu języka C#. Możesz skorzystać z różnych podejść i jeśli potrzebujesz dalszej pomocy, skontaktuj się z nami za pośrednictwem bezpłatnego forum wsparcia.
Zobacz też
Wskazówka: Być może zainteresuje Cię darmowy Konwerter tekstu na GIF, który pozwala generować animacje z tekstów.