2013-01-21 7 views
0


TagNode에서 html을 구문 분석하려고합니다. 문제는 내부 예외 때문에 작동하지 못하는 것입니다. 물론간단한 HTMLserializer를 사용하는 NullPointerException

CleanerProperties props = new CleanerProperties(); 
SimpleHtmlSerializer serializer = new SimpleHtmlSerializer(props); 
changes.setHtmlForTimetable(serializer.getAsString(root)); 

루트가 null는 아니고, 명백하게 시리얼도 null되지 않습니다 : 여기 내 전화입니다.

는 스택 추적입니다 :

01-21 23:42:50.860: W/System.err(25196): java.lang.NullPointerException 
01-21 23:42:50.865: W/System.err(25196): at org.htmlcleaner.HtmlSerializer.isMinimizedTagSyntax(HtmlSerializer.java:54) 
01-21 23:42:50.875: W/System.err(25196): at org.htmlcleaner.HtmlSerializer.serializeOpenTag(HtmlSerializer.java:189) 
01-21 23:42:50.880: W/System.err(25196): at org.htmlcleaner.SimpleHtmlSerializer.serialize(SimpleHtmlSerializer.java:52) 
01-21 23:42:50.885: W/System.err(25196): at org.htmlcleaner.Serializer.write(Serializer.java:249) 
01-21 23:42:50.890: W/System.err(25196): at org.htmlcleaner.Serializer.getAsString(Serializer.java:176) 
01-21 23:42:50.900: W/System.err(25196): at org.htmlcleaner.Serializer.getAsString(Serializer.java:197) 
01-21 23:42:50.905: W/System.err(25196): at org.htmlcleaner.Serializer.getAsString(Serializer.java:206) 
01-21 23:42:50.915: W/System.err(25196): at com.roneven.blich.GetChanges$1$1$1.callback(GetChanges.java:125) 
01-21 23:42:50.920: W/System.err(25196): at com.roneven.blich.GetChanges$1$1$1.callback(GetChanges.java:1) 
01-21 23:42:50.930: W/System.err(25196): at com.androidquery.callback.AbstractAjaxCallback.callback(AbstractAjaxCallback.java:501) 
01-21 23:42:50.935: W/System.err(25196): at com.androidquery.callback.AbstractAjaxCallback.afterWork(AbstractAjaxCallback.java:1269) 
01-21 23:42:50.940: W/System.err(25196): at com.androidquery.callback.AbstractAjaxCallback.run(AbstractAjaxCallback.java:993) 
01-21 23:42:50.945: W/System.err(25196): at android.os.Handler.handleCallback(Handler.java:725) 
01-21 23:42:50.945: W/System.err(25196): at android.os.Handler.dispatchMessage(Handler.java:92) 
01-21 23:42:50.950: W/System.err(25196): at android.os.Looper.loop(Looper.java:137) 
01-21 23:42:50.950: W/System.err(25196): at android.app.ActivityThread.main(ActivityThread.java:5191) 
01-21 23:42:50.955: W/System.err(25196): at java.lang.reflect.Method.invokeNative(Native Method) 
01-21 23:42:50.955: W/System.err(25196): at java.lang.reflect.Method.invoke(Method.java:511) 
01-21 23:42:50.960: W/System.err(25196): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
01-21 23:42:50.960: W/System.err(25196): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 
01-21 23:42:50.965: W/System.err(25196): at dalvik.system.NativeStart.main(Native Method) 

UPDATE : 이 난 HtmlSerializer 또는 TagNode이 소식통에 따르면

+0

'루트 '는 어떻습니까? –

+0

그것은'TagNode' 객체입니다. 그리고 그것은 null이 아닙니다 –

+0

변경 사항도 null이 아닙니다. 스택 추적에서 예외가 'HtmlSerializer' 내부에 던져지는 것을 볼 수 있습니다. 그래서 이것은 아마도 문제가 아닙니다. 어쩌면 어떻게 든 그것이 정적 방법이라고 관련 될 수 있을까요? –

답변

1

(HTML 이미 성공적으로 추출 된 일부 문자열 명령을 사용하여) 사용하지 않고, 해결 방법을 발견 HtmlCleaner, HtmlSerializer.isMinimizedTagSyntax()CleanerProperties.getTagInfoProvider()입니다. 그리고 CleanerProperties.java

ITagInfoProvider tagInfoProvider = null; 
... 
public ITagInfoProvider getTagInfoProvider() { 
    return tagInfoProvider; 
} 

CleanerProperties에서 설정 할 방법이 없습니다. tagInfoProvider은 사용하기 전에 어떻게 든 설정해야합니다.

나는 어떻게되는지 알아 내기 위해 HtmlCleaner의 문서에 약간의 정보를 제공해야한다고 생각하는데,이 문서는 Java code usage에 나와 있습니다.

+0

감사합니다. HtmlSerializer 또는 TagNode를 사용하지 않고도 해결책을 찾았습니다. 일부 문자열 명령) –

0

나는 똑같은 문제가있어 해결책을 찾는 데 많은 시간을 보냈습니다.

CleanerProperties props = new CleanerProperties() { 

    @Override 
    public ITagInfoProvider getTagInfoProvider() { 
     return DefaultTagProvider.getInstance(); 
    } 

}; 

HtmlSerializer simpleHtmlSerializer = new SimpleHtmlSerializer(props); 
String message = simpleHtmlSerializer.getAsString(tagNode, true); 
관련 문제