2013-03-12 2 views
3

누군가 iTextSharp (C#)의 XMLWorkerHelper를 사용하여 요소 목록에 HTML 구문 분석 예제를 제공 할 수 있습니까? 문서에 주어진XMLWorker를 사용하여 HTML 목록에

Java 버전은 다음 파일 스트림이 여기에있어 사용하는 대신

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

:

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

당신은 당신의 자신의 클래스에 IElementHandler 인터페이스를 구현해야 문자열을 파싱하는 예제입니다. 파일을 사용하려면 StringReaderStreamReader으로 바꿉니다.

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 
     } 
    } 
+0

Samlpe 처리기 란 무엇입니까? 설명해 주시겠습니까? @Chris Haas – CodeIt

+1

'SampleHandler'는 iText의'IElementHandler' 인터페이스를 구현하는 커스텀 클래스입니다. 이것은 인터페이스의 계약을 준수하는 한 원하는 모든 작업을 수행 할 수있는 완전한 사용자 정의 코드입니다. –

+0

실제로 html로 pdf 변환 오전,하지만 ParseToElementList 호출 될 때 유니 코드 문자를 가져올 수 없습니다. ParseXHtml을 사용하면 오류없이 수행 할 수있었습니다. 하지만 그 방법은 내 pdfpcells에 결과를 추가 할 수 없습니다. 올바른 방법으로 나를 안내 할 수 있습니까? @ 크리스 하스 – CodeIt

관련 문제