3

iTextSharp (C#) で XMLWorkerHelper を使用して、HTML を要素のリストに解析する例を教えてください。

ドキュメントに記載されている Java のバージョンは次のとおりです。

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"));
4

1 に答える 1

4

IElementHandler独自のクラスにインターフェイスを実装する必要があります。

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());
        }
    }
}

ファイル ストリームを使用する代わりに、文字列を解析する例を次に示します。StringReaderファイルを使用するには、を に置き換えます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
        }
    }
于 2013-03-12T13:33:44.453 に答える