HTML列出使用XMLWorker [英] HTML to List using XMLWorker

查看:709
本文介绍了HTML列出使用XMLWorker的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能有人请提供解析HTML到iTextSharp的(C#)使用XMLWorkerHelper元素列表的一个例子。

作为文档中给出​​的JAVA版本是:

  XMLWorkerHelper.getInstance()。parseXHtml(新ElementHandler(){
        公共无效添加(最终可写W){          如果(W的instanceof WritableElement){
            清单<组件>元素=((WritableElement)w)的.elements();
          //元素写的类名到文件
         }
        }     },HTMLParsingToList.class.getResourceAsStream(/ HTML / walden.html));


解决方案

您需要实现一类自己的 IElementHandler 接口:

 公共类SampleHandler:IElementHandler {
    //元素的泛型列表
    公开名单< IElement>元素=新的List< IElement>();
    //所提供的项目添加到列表
    公共无效添加(IWritable W){
        如果(w是WritableElement){
            elements.AddRange(((WritableElement)w)的.Elements());
        }
    }
}

而不是使用文件流的下面是一个示例解析字符串。要使用文件替换 StringReader 的StreamReader

 字符串的html =&LT; HTML&GT;&LT; HEAD&GT;&LT;标题&GT;测试文档&LT; /标题&GT;&LT; /头&GT;&LT;身体GT;&LT; P&gt;这是一个。测试&LT;强&GT;大胆&LT; EM&gt;和italic</em></strong></p><ol><li>Dog</li><li>Cat</li></ol></body></html>\";
    //实例我们的处理
    VAR MH =新SampleHandler();
    //绑定读者我们的文字
    使用(TextReader的SR =新StringReader(HTML)){
        //解析
        。XMLWorkerHelper.GetInstance()ParseXHtml(MH,SR);
    }    //循环遍历每个元素
    的foreach(在mh.elements VAR元素){
        //循环中的每个元素每个块
        的foreach(在element.Chunks VAR块){
            //做一点事
        }
    }

Could somebody please provide an example of parsing HTML into a list of elements using XMLWorkerHelper in iTextSharp (C#).

The JAVA version as given in the documentation is:

XMLWorkerHelper.getInstance().parseXHtml(new ElementHandler() {
        public void add(final Writable w) {

          if (w instanceof WritableElement) {
            List<Element> elements = ((WritableElement)w).elements();
          // write class names of elements to file
         }
        }

     }, HTMLParsingToList.class.getResourceAsStream("/html/walden.html"));

解决方案

You need to implement the IElementHandler interface in a class of your own:

public class SampleHandler : IElementHandler {
    //Generic list of elements
    public List<IElement> elements = new List<IElement>();
    //Add the supplied item to the list
    public void Add(IWritable w) {
        if (w is WritableElement) {
            elements.AddRange(((WritableElement)w).Elements());
        }
    }
}

Instead of using the file stream here's an example parsing a string. To use a file replace the StringReader with a StreamReader.

    string html = "<html><head><title>Test Document</title></head><body><p>This is a test. <strong>Bold <em>and italic</em></strong></p><ol><li>Dog</li><li>Cat</li></ol></body></html>";
    //Instantiate our handler
    var mh = new SampleHandler();
    //Bind a reader to our text
    using (TextReader sr = new StringReader(html)) {
        //Parse
        XMLWorkerHelper.GetInstance().ParseXHtml(mh, sr);
    }

    //Loop through each element
    foreach (var element in mh.elements) {
        //Loop through each chunk in each element
        foreach (var chunk in element.Chunks) {
            //Do something
        }
    }

这篇关于HTML列出使用XMLWorker的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆