2011-03-29 5 views
0

큰 기호와 작은 기호가 포함 된 htmlcontent가 있습니다. 그러나 그 기호는 & lt으로 인코딩되지 않습니다. 및 & gt; 콘텐츠의 태그를 조정하기 위해 cyberneko html 파서를 통해 콘텐츠를 전달합니다. 사이의 내용을 파싱 한 후 기호보다 크거나 작은 기호를 구분합니다. 이 문제를 극복하기 위해 cyberneko html 파서에서 설정해야하는 설정은 무엇입니까?cyberneko html 설정에서 인코딩되지 않은 크고 작은 기호를 무시합니다.

샘플 내용 :

< 사업부 서버가 있기 때문에 그 가치 282> 0 MS 중요 > 평균 응답 시간. <BR> [임계 상세 : 중요하다면 값> 0 경고 경우 값 = 0, 취소하면 값 < 0] 파싱 nekohtml 후 </DIV >

<div> <br > 0] </div >

도와주세요. 미리 감사

답변

0

가 출력 아래 프로그램

<DIV> 평균 응답 시간 서버 중요한 가치 282 &된다 때문에; 0 ms. < br/> [임계 값 세부 사항 : 값이 0 인 경우 위험 & gt; 0, 값이 0이면 경고, 값이 0이면 경고 & lt; 0] </DIV >

package test; 

import java.io.StringReader; 

import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

import org.apache.xerces.dom.DocumentImpl; 
import org.cyberneko.html.parsers.DOMFragmentParser; 
import org.w3c.dom.Document; 
import org.w3c.dom.DocumentFragment; 
import org.xml.sax.InputSource; 

public class TestHTMLDOMFragment { 
    private static final String PARSE_TEXT = "<div>Average Response Time server is critical because its value 282 > 0 ms. <br>[Threshold Details : Critical if value > 0, Warning if value = 0, Clear if value < 0]</div>"; 

    public static void main(String[] argv) throws Exception { 
     DOMFragmentParser parser = new DOMFragmentParser(); 

     // output the elements in lowercase, nekohtml doesn't do this by default 
     parser.setProperty("http://cyberneko.org/html/properties/names/elems","lower"); 

     // if this is set to true (the default, you dont need to specifiy this) 
     // then neko html wont and an html,head and body tags to the response. 
     parser.setFeature("http://cyberneko.org/html/features/document-fragment",true); 

     Document document = new DocumentImpl(); 
     DocumentFragment fragment = document.createDocumentFragment(); 

     // parse the document into a fragment 
     parser.parse(new InputSource(new StringReader(PARSE_TEXT)), fragment); 

     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     // don't display the namespace declaration 
     transformer.setOutputProperty("omit-xml-declaration", "yes"); 
     DOMSource source = new DOMSource(fragment); 
     StreamResult result = new StreamResult(System.out); 
     transformer.transform(source, result); 

    } 
} 

코드의 코멘트 위의 내가 사용했던 파서 설정을 보여줍니다. 당신이도

내가 nekohtml 1.9.14

를 사용하고 단지 HTML 조각이다 텍스트를 구문 분석 할 수있다

나는 또한 org.cyberneko.html.parsers.DOMFragmentParser을 사용했습니다 maven을 사용한다면 pom.xml 의존성 섹션이 있습니다 ...

<dependencies> 
    <dependency> 
     <groupId>net.sourceforge.nekohtml</groupId> 
     <artifactId>nekohtml</artifactId> 
     <version>1.9.14</version> 
     <type>jar</type> 
    </dependency> 
</dependencies> 
관련 문제