HTML to List使用XMLWorker
有人可以提供一个使用iTextSharp(C#)中的XMLWorkerHelper将HTML解析为元素列表的示例。
文档中给出的JAVA版本是:
XMLWorkerHelper.getInstance().parseXHtml(new ElementHandler() { public void add(final Writable w) { if (w instanceof WritableElement) { List elements = ((WritableElement)w).elements(); // write class names of elements to file } } }, HTMLParsingToList.class.getResourceAsStream("/html/walden.html"));
您需要在自己的类中实现IElementHandler
接口:
public class SampleHandler : IElementHandler { //Generic list of elements public List elements = new List (); //Add the supplied item to the list public void Add(IWritable w) { if (w is WritableElement) { elements.AddRange(((WritableElement)w).Elements()); } } }
这里不是使用文件流,而是解析字符串的示例。 要使用文件,请将StreamReader
替换为StreamReader
。
string html = "Test Document This is a test. Bold and italic
- Dog
- Cat
"; //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 } }