0

Java コードから xml ファイルを読み込もうとすると、添付の画像に示すようなエラーが発生します。 ここに画像の説明を入力

Java コード:

public ActionForward xmlupload(ActionMapping mapping,
            ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws IOException, ServletException {

    String target = new String("success");

    System.out.println("I AM IN ACTION");
 List<XmltodbBO> branchList = new ArrayList<XmltodbBO>();
 try {
      File file = new File("D:\\FNDWRR.xml");
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = dbf.newDocumentBuilder();
      Document doc = db.parse(file);
      doc.getDocumentElement().normalize();
      System.out.println("Root element " + doc.getDocumentElement().getNodeName());
  NodeList nodeLst = doc.getElementsByTagName("fsg:RptLine");
      System.out.println("Root Tag value");
      XmltodbDAO sim=new XmltodbDAO();

      for (int s = 0; s < nodeLst.getLength(); s++) {
          XmltodbBO bO=new XmltodbBO();
        Node fstNode = nodeLst.item(s);

        if (fstNode.getNodeType() == Node.ELEMENT_NODE) {



               Element fstElmnt = (Element) fstNode;
          NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("fsg:RptCell");
          System.out.print(fstNmElmntLst.getLength());
          Node current = fstNmElmntLst.item(0);

              if(current.getNodeType() == Node.ELEMENT_NODE){


                 String nodeName = current.getNodeName();
              Element fstNmElmnt = (Element) fstNmElmntLst.item(0);

              NodeList fstNm = fstNmElmnt.getChildNodes();
              Text itemCheckedText = (Text) fstNm.item(0);
              if (itemCheckedText != null) {
              System.out.println("Tag value : "  + ((Node) fstNm.item(0)).getNodeValue());
              bO.setFirstfieldName( fstNm.item(0).getNodeValue());

              }

              }



             if( fstNmElmntLst.getLength()>1){

               Node current1 = fstNmElmntLst.item(1);
                 if(current1.getNodeType() == Node.ELEMENT_NODE){
                 Element fstNmElmnt = (Element) fstNmElmntLst.item(1);
                 NodeList fstNm = fstNmElmnt.getChildNodes();
              Text itemCheckedText1 = (Text) fstNm.item(0);
              if (itemCheckedText1 != null) {
              System.out.println("Tag value : "  + ((Node) fstNm.item(0)).getNodeValue());
              bO.setSecondfieldName( fstNm.item(0).getNodeValue());

              }
               }


              }

             if( fstNmElmntLst.getLength()>2){

               Node current1 = fstNmElmntLst.item(2);
                 if(current1.getNodeType() == Node.ELEMENT_NODE){
                 Element fstNmElmnt = (Element) fstNmElmntLst.item(2);
                 NodeList fstNm = fstNmElmnt.getChildNodes();
              Text itemCheckedText1 = (Text) fstNm.item(0);
              if (itemCheckedText1 != null) {
              System.out.println("Tag value : "  + ((Node) fstNm.item(0)).getNodeValue());
              bO.setThirdfieldName(fstNm.item(0).getNodeValue());

              }
               }


              }
        }  branchList.add( bO); }

      sim.adddb(branchList);


              }

catch (Exception e) {
    e.printStackTrace();
  }
     return (mapping.findForward(target));
 }

メインクラスを使用して同じアプリケーションを実行している場合、正常に動作しています。しかし、struts アクションを使用して同じことをしようとすると、このエラーが発生します。私を助けてください。

4

2 に答える 2

0

スタック トレースは、xerces を xml パーサーとして使用していることを示しています (jre/jdk の一部である xml パーサーとは対照的に)。別の xml パーサーを使用すると、あらゆる種類の問題が発生する可能性があります。意図的にそうしている場合を除き、削除することをお勧めします。(maven のようなビルド システムを使用している場合、"xercesImpl" または xml-apis" jar に推移的な依存関係が発生することがあります。これらは pom で除外する必要があります。)

于 2013-03-22T13:50:11.780 に答える
0

リーダーを使用して、文字セットを解析および指定してみてください。

Document document = builder.parse(new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8"));

古い/異なるxmlパーサーを誤って引き込んでいる可能性があるという他の回答にも同意します。

于 2013-03-22T13:56:47.030 に答える