Sonstiges > Offtopic
HTml Datei in mehrere Dateien zerschneiden
flaite:
Attachment von txt in .html umbenennen.
Pfade in c# code sind hartcodiert.
So. Konnte mich dem nun nach längerer Zeit wieder widmen.
Ein paar Dinger gab es da noch.
Die konnte ich aber mit Hilfe dieses C# codes erstmal beheben.
Das angehängte File ist ein solcher "Problemfall". Es sollte relativ offensichtlich sein, was mit dem C# code transformiert wird (und somit vorher anders war als erwünscht).
Nix gegen Martin (war eine große Hilfe). Ich habe auch die Infos sehr tröpfchenweise herausgelassen.
Ich hab erstmal mit Java Regex angefangen. Angesichts dieses Beispiels war dann aber C# einfacher (http://tim.mackey.ie/CleanWordHTMLUsingRegularExpressions.aspx)
Ich arbeite allerdings noch an entsprechenden Java Code und hab schon Regex mit NIO am Laufen.
Poste hierzu später.
Hört sich chaotisch an? Yes. Indeed. Sorry.
Axel
--- Code: ---using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Encoding encode = Encoding.GetEncoding("ISO-8859-1");
//Console.WriteLine(new Program().CleanHtml("<SPAN lang=EN-IE style=\"mso-ansi-language: EN-IE\">"));
FileStream file = new FileStream("C://perlMy//Version_4//_Toc134343703.html", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(file, encode);
String inRead = sr.ReadToEnd();
String res = new Program().CleanHtml(inRead);
FileStream fileNew = new FileStream("C://perlMy//Version_4//zz.html", FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fileNew, encode);
sw.Write(res);
sw.Close();
sr.Close();
Console.WriteLine(res);
}
private string CleanHtml(string html)
{
// start by completely removing all unwanted tags
html = Regex.Replace(html, @"<[/]?(font|span|xml|del|ins|[ovwxp]:\w+)[^>]*?>", "", RegexOptions.IgnoreCase);
// then run another pass over the html (twice), removing unwanted attributes
html = Regex.Replace(html, @"<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>", "<$1$2>", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>", "<$1$2>", RegexOptions.IgnoreCase);
return html;
}
}
}
--- Ende Code ---
Geh jetzt erstmal suchen, wie ich mit C# alle Dateien eines Verzeichnisses verarbeite.
flaite:
Na. War klar. Encoding Alarm. Alle Germän Umlaute verschwanden einfach.
Hab den code aber entsprechend geändert und oben berichtigt. Es sieht sehr gut aus.
Ich finde man sieht damit auch, wie gut sich Regular Expression heute in verschiedenen Plattformen einsetzen lassen. Muß da natürlich noch was tun, damit ich mir das nicht immer bei Martin oder aus dem Internet besorgen muß.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln