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) 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>
あなたの回答
tips
プレビュー