Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Parser {
- public void parse(string html, DocumentBuilder builder) {
- HtmlDocument docHtml = new HtmlDocument();
- docHtml.LoadHtml(html);
- HtmlNode currentNode = docHtml.DocumentNode;
- while (currentNode.HasChildNodes || currentNode.NextSibling != null || currentNode.ParentNode.NextSibling != null)
- {
- if (currentNode.HasChildNodes)
- {
- currentNode = currentNode.FirstChild;
- } else if (currentNode.NextSibling != null)
- {
- sortirNode(currentNode, builder);
- currentNode = currentNode.NextSibling;
- } else
- {
- while (currentNode != docHtml.DocumentNode)
- {
- if (currentNode.ParentNode.NextSibling != null)
- {
- sortirNode(currentNode, builder);
- sortirNode(currentNode.ParentNode, builder);
- currentNode = currentNode.ParentNode.NextSibling;
- break;
- } else
- {
- sortirNode(currentNode, builder);
- currentNode = currentNode.ParentNode;
- }
- }
- }
- if (currentNode.Name == "ul")
- {
- builder.Writeln();
- builder.InsertBreak(BreakType.ParagraphBreak);
- builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.ListBullet;
- }
- if (currentNode.Name == "li" && ((currentNode.PreviousSibling != null) && (currentNode.PreviousSibling.Name == "li")))
- {
- builder.Writeln();
- builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.ListBullet;
- }
- if (currentNode.Name == "#text")
- {
- if (currentNode.Ancestors("b").Count() > 0 || currentNode.Ancestors("strong").Count() > 0)
- {
- builder.Font.Bold = true;
- }
- else
- {
- builder.Font.Bold = false;
- }
- if (currentNode.Ancestors("a").Count() > 0 || currentNode.Ancestors("u").Count() > 0)
- {
- builder.Font.Underline = Underline.Single;
- }
- else
- {
- builder.Font.Underline = Underline.None;
- }
- if (currentNode.Ancestors("em").Count() > 0 )
- {
- builder.Font.Italic = true;
- }
- else
- {
- builder.Font.Italic = false;
- }
- if (currentNode.Ancestors("h2").Count() > 0)
- {
- builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading2;
- }
- builder.Write(currentNode.InnerText);
- }
- if (currentNode.Name == "p")
- {
- builder.InsertBreak(BreakType.ParagraphBreak);
- builder.InsertParagraph();
- }
- }
- }
- public void sortirNode(HtmlNode node, DocumentBuilder builder)
- {
- if (node.Name == "h2")
- {
- builder.InsertBreak(BreakType.ParagraphBreak);
- builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement