-2

http://www.easywayserver.com/blog/java-read-xml-file/のチュートリアルを使用して JSP から読み取ろうとしている以下の XML ファイルがあります。

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 は次の行でエラーをスローしますが、2 番目の 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();

したがって、nameElementsnull であるか、子ノードがありません ( getChildNodes()null を返します)。

をループしているため、コードは非常に疑わしいですがnl、インデックスを使用しnameNlcて、同じ数の要素がある場合とない場合がある要素にアクセスします。<counter>また、どちらのサンプルにも表示されない という名前の要素を探しています。

エラー メッセージと表示されている内容との間に重大な断絶があります。何をしているのかを詳しく調べる必要があるのではないかと思います。他にも矛盾点がありそうです。

私はこれが答えとしての境界線であることを認識しています(コメントとしてはより良いかもしれません)が、コメントには長すぎます.投稿の矛盾を考えると、おそらくあなたが期待できる最高のものです.

于 2013-04-15T16:53:19.583 に答える