0


からhtmlを解析しようとしていTagNodeます。問題は、内部例外があり、それが機能しないことです。ここに私の電話があります:

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)

更新:HtmlSerializerまたはTagNodeを使用せずに回避策を見つけました(すでに正常に抽出されたhtmlといくつかの文字列コマンドを使用)

4

2 に答える 2

1

HtmlCleanerのソースによるとHtmlSerializer.isMinimizedTagSyntax()CleanerProperties.getTagInfoProvider(). そして、CleanerProperties.java

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

に設定する方法はありませんCleanerPropertiestagInfoProvider使用する前に、何らかの方法で設定する必要があります。

その方法を知るには、 Java コードの使用法などで入手できる HtmlCleaner のドキュメントを少し掘り下げる必要があると思います。

于 2013-01-21T22:09:59.943 に答える
0

私はまったく同じ問題を抱えており、解決策を見つけるのにかなりの時間を費やしました。

CleanerProperties props = new CleanerProperties() {

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

};

HtmlSerializer simpleHtmlSerializer = new SimpleHtmlSerializer(props);
String message = simpleHtmlSerializer.getAsString(tagNode, true);
于 2013-03-01T08:43:16.350 に答える