-2

我有以下 XML 文件,我正在尝试使用http://www.easywayserver.com/blog/java-read-xml-file/上的教程从 JSP 中读取这些文件:

XML 文件 1:

<root>

  <data v="1.0">

    <cellimage counter="0" cash_filename="C:\Temp\_TempFolder\39d437f08cc302876a70a0f91b137991_h.jpg" width="94" height="141" />

    <cellimage counter="1" cash_filename="C:\Temp\_TempFolder\39d437f08cc302876a70a0f91b137991_h.jpg" width="94" height="141" />

  </data>

</root>

XML 文件 2

<people>
  <person>
    <name>Joe</name>
    <age>30</age>
  </person>
  <person>
    <name>Rob</name>
    <age>29</age>
  </person>
</people>

上面的 XML 文件 1 在下一行引发错误,但第二个 XML 文件工作正常。有人可以告诉我如何使 XML 文件 1 工作吗?

 String dateTagValue=dateElements.getChildNodes().item(0).getNodeValue();

错误堆栈跟踪:

Caused by: org.apache.jasper.JasperException: An exception occurred processing JSP page /html/archivedetails/view.jsp at line 33

30:     for (int i = 0; i < nl.getLength(); i++) {
31:         NodeList nameNlc = doc.getElementsByTagName("counter");
32:         Element nameElements = (Element) nameNlc.item(i);
33:         String nameTagValue = nameElements.getChildNodes().item(0).getNodeValue();
34: 
35:         out.println("name :" + nameTagValue + "<br>");
36:     }


Stacktrace:
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:73)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
    at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:323)
    at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:105)
    ... 167 more
Caused by: java.lang.NullPointerException
    at org.apache.jsp.html.archivedetails.view_jsp._jspService(view_jsp.java:152)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    ... 182 more
4

1 回答 1

0

例外是在

String nameTagValue = nameElements.getChildNodes().item(0).getNodeValue();

所以要么nameElements为空,要么没有子节点(getChildNodes()返回空)。

该代码非常可疑,因为您正在循环nl,但随后使用索引访问nameNlc可能具有或可能不具有相同数量元素的元素。此外,您正在寻找名为 的元素<counter>,它们均未出现在任一示例中。

错误消息与您所显示的内容之间存在严重脱节,我怀疑您需要仔细查看您在做什么。可能还有其他不一致之处。

我意识到这是一个边缘的答案(作为评论可能会更好),但评论太长了,鉴于您的帖子中的不一致,可能是您所希望的最好的。

于 2013-04-15T16:53:19.583 回答