首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有HTML单元的空指针异常

带有HTML单元的空指针异常
EN

Stack Overflow用户
提问于 2012-10-11 05:09:42
回答 1查看 900关注 0票数 0

我使用的是htmlunit-2/9版本,当我试图获取当前的htmlunit内容并将其保存到临时文件以供将来参考时,当我调用currentPage.asXml()时,我将得到一个空指针异常。

任何指针或帮助都将不胜感激。

下面是堆栈跟踪:

代码语言:javascript
复制
java.lang.NullPointerException
    at **com.gargoylesoftware.htmlunit.SgmlPage.asXml(SgmlPage.java:206)**
    at com.yahoo.vis.ddbuilder.validator.DDBuilderValidator.validateTemplate_1(DDBuilderValidator.java:308)
    at com.yahoo.vis.ddbuilder.validator.DDBuilderValidator.validate(DDBuilderValidator.java:72)
    at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.yahoo.robot.components.interfaces.Executable.run(Executable.java:73)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

下面是导致空指针的代码段。我正在为大约100个测试用例运行这个测试,在100个测试案例中,有20个-30个随机失败。

代码语言:javascript
复制
private IValidationResponse validateTemplate_2(String url, Properties verifyProps, HtmlPage currentPage) throws FailingHttpStatusCodeException, MalformedURLException, IOException
    {
        IValidationResponse validationResponse = new DefaultValidationResponse();
        String query = verifyProps.getProperty(IConstants.QUERY);
        System.err.println("Verifying Query ::- "+query);
        validationResponse.setQuery(query);
        validationResponse.setActualResponseAsBuffer(new StringBuffer(currentPage.asXml()));
...

}
EN

回答 1

Stack Overflow用户

发布于 2012-10-11 07:42:36

HtmlPage扩展了SgmlPage类,我已经完成了SgmlPage for asXml()的源代码。

它内部调用另一个方法getDocumentElement(),它返回DomElement

来自源代码,以下是以下方法:

代码语言:javascript
复制
 @Override
   public String asXml() {
       return getDocumentElement().asXml(); // This is Line 206, From your error trace
   }

public DomElement  getDocumentElement() {
        DomNode childNode = getFirstChild();

        while (childNode != null && !(childNode instanceof DomElement)) {

           childNode = childNode.getNextSibling();

       }
       return (DomElement) childNode;
}

这里有可能childNode可以是空的。如果childNode被返回为NULL,调用getDocumentElement().asXml();将引发NullPointerException

PS.:您还没有提供任何详细信息,说明如何调用方法和您要传递的内容。所以,我无法帮助找到根本原因,但是,我希望这能帮助你至少理解为什么你会得到错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12832598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档