質問編集履歴

2 修正

退会済みユーザー

退会済みユーザー

2018/07/29 12:37  投稿

fileがコンパイル、実行できない
eclipseでスッキリわかるJava入門実践編を勉強しています。
//(1)の個所でエラーがでます。"c:/tmp/rpgsave.xml"は下記のようにしているのですが、
WebでC:\tmp\rpgsave.xmlで何も表示されないです。NULLということで、エラーになるのでしょうか。色々調べているとき、InputStream is がNULLでした。そのエラーの再現ができなくて
すみませんが、どこが悪いのか教えてください。
エディタはTeraPadを使っています。TeraPadのc:/tmp/rpgsave.xmlは正常に表示されます。
```ここに言語を入力
コードpackage list10_06;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class Main {
   public static void main(String[] args) throws Exception {
       InputStream is = new FileInputStream("c:/tmp/rpgsave.xml");
       Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);                        // (1)
       Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is); // (1)                   
       Element hero = doc.getDocumentElement();                   // (2)
       Element weapon = findChildByTag(hero, "weapon");           // (3)
       Element power = findChildByTag(weapon, "power");           // (4)
       String value = power.getTextContent();                     // (5)
   }
   // 指定された名前を持つタグの最初の子タグを返す
   static Element findChildByTag(Element self, String name)throws Exception {
       NodeList children = self.getChildNodes();              /* すべての子を取得 */
       for(int i = 0; i < children.getLength(); i++) {
           if(children.item(i) instanceof Element) {
               Element e = (Element) children.item(i);
               if(e.getTagName().equals(name)) return e;      /* タグ名を照合 */
           }
       }
       return null;
   }
}
```
```
"c:/tmp/rpgsave.xml"
<?xml version="1.0" encoding="UTF-8"?>
<hero>
   <name>ミナト</name>
   <hp>75</hp>
   <mp>18</mp>
   <weaopon>
       <name>鋼の剣</name>
       <power>7</power>
   </weaopon>
</hero>
```
  • Java

    24862 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1 修正

退会済みユーザー

退会済みユーザー

2018/07/29 12:30  投稿

fileがコンパイル、実行できない
eclipseでスッキリわかるJava入門実践編を勉強しています。
//(1)の個所でエラーがでます。"c:/tmp/rpgsave.xml"は下記のようにしているのですが、
WebでC:\tmp\rpgsave.xmlで何も表示されないです。NULLということで、エラーになるのでしょうか。色々調べているとき、InputStream is がNULLでした。そのエラーの再現ができなくて
すみませんが、どこが悪いのか教えてください。
エディタはTeraPadを使っています。TeraPadのc:/tmp/rpgsave.xmlは正常に表示されます。
---
Main.java
package list10_06;
```ここに言語を入力
コードpackage list10_06;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class Main {
   public static void main(String[] args) throws Exception {
 
       InputStream is = new FileInputStream("c:/tmp/rpgsave.xml");
      Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is); // (1)               
      Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);                        // (1)
       Element hero = doc.getDocumentElement();                   // (2)
       Element weapon = findChildByTag(hero, "weapon");           // (3)
       Element power = findChildByTag(weapon, "power");           // (4)
       String value = power.getTextContent();                     // (5)
   }
   // 指定された名前を持つタグの最初の子タグを返す
   static Element findChildByTag(Element self, String name)throws Exception {
       NodeList children = self.getChildNodes();              /* すべての子を取得 */
       for(int i = 0; i < children.getLength(); i++) {
           if(children.item(i) instanceof Element) {
               Element e = (Element) children.item(i);
               if(e.getTagName().equals(name)) return e;      /* タグ名を照合 */
           }
       }
       return null;
   }
}
```
```
"c:/tmp/rpgsave.xml"
<?xml version="1.0" encoding="UTF-8"?>
<hero>
   <name>ミナト</name>
   <hp>75</hp>
   <mp>18</mp>
   <weaopon>
       <name>鋼の剣</name>
       <power>7</power>
   </weaopon>
</hero>
```
  • Java

    24862 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る