XML初心者です。javaプログラムで階層を降りてXMLデータを取得するよう努めたのですがうまくいきませんでした。そこでノードツリーを辿るのではなく、getElementsByTagName()を使って、指定の要素名の要素の一覧を取得しそこからデータを得ようとしています。しかしコンソールに対応に困るようなエラーが出て立ちどまっています。
エラー:=java.lang.ClassCastException: class com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl cannot be cast to class org.w3c.dom.Node (com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl and org.w3c.dom.Node are in module java.xml of loader 'bootstrap')
NodeListも org.w3c.dom のものをimportしてあると思うのですが影響してないように見えます。
データを得るためこのエラーを回避する方法をご教授ください。
Java
1package model; 2 3 4import java.net.URL; 5 6import javax.net.ssl.HttpsURLConnection; 7import javax.xml.parsers.DocumentBuilder; 8import javax.xml.parsers.DocumentBuilderFactory; 9 10import org.w3c.dom.Element; 11import org.w3c.dom.Node; 12import org.w3c.dom.NodeList; 13 14 15public class Retrieve { 16 17 18 19 public String[] retrieve(String ISBN){ 20 21 String [] data = new String[6]; 22 try { 23 URL url = new URL("https://iss.ndl.go.jp/api/sru?operation=searchRetrieve&query=isbn%3d%22"+ISBN+"%22"); 24 HttpsURLConnection https = (HttpsURLConnection)url.openConnection(); 25 https.setRequestMethod("GET"); 26 https.connect(); 27 28 DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); 29 DocumentBuilder builder = dbfactory.newDocumentBuilder(); 30 Element searchRetrieveResponseNode = builder.parse(https.getInputStream()).getDocumentElement(); 31 System.out.println("searchRetrieveResponseNode.getTextContent()="+searchRetrieveResponseNode.getTextContent()); 32 33 data[5] = ISBN; 34 System.out.println("try0.01"); 35 NodeList titles = searchRetrieveResponseNode.getElementsByTagName("dc:title"); 36 System.out.println("try0.10"); 37 System.out.println("titles="+titles); 38 System.out.println("titles.getTextContent()="+((Node)titles).getTextContent()); 39 System.out.println("try0.11"); 40 data[0] = ((Node)titles).getTextContent(); 41 42https.disconnect(); 43 } 44 catch(Exception e) { 45 System.out.println("catch"); 46 System.out.println("e="+e); 47 } 48 return data; 49 } 50}
XML
11.2 2 1 3 0 4 5<facets> 6 <lst name="REPOSITORY_NO"> 7 <int name="R100000001">1</int> 8 <int name="R100000002">1</int> 9 </lst> 10 <lst name="NDC"> 11 </lst> 12 <lst name="ISSUED_DATE"> 13 <int name="2015">1</int> 14 </lst> 15 <lst name="LIBRARY"> 16 <int name="さいたま市立中央図書館">1</int> 17 <int name="国立国会図書館">1</int> 18 <int name="堺市立中央図書館">1</int> 19 <int name="大阪市立図書館">1</int> 20 <int name="大阪府立中央図書館">1</int> 21 <int name="奈良県立図書情報館">1</int> 22 <int name="山口県立山口図書館">1</int> 23 <int name="山形県立図書館">1</int> 24 <int name="川崎市立図書館">1</int> 25 <int name="新潟県立図書館">1</int> 26 <int name="札幌市中央図書館">1</int> 27 <int name="栃木県立図書館">1</int> 28 <int name="沖縄県立図書館">1</int> 29 <int name="滋賀県立図書館">1</int> 30 <int name="県立長野図書館">1</int> 31 <int name="福岡市総合図書館">1</int> 32 <int name="群馬県立図書館">1</int> 33 <int name="若狭図書学習センター">1</int> 34 <int name="長崎県立長崎図書館">1</int> 35 <int name="香川県立図書館">1</int> 36 <int name="鳥取県立図書館">1</int> 37 </lst> 38</facets> 39 40 41 42 info:srw/schema/1/dc-v1.1 43 string 44 45<srw_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:srw_dc="info:srw/schema/1/dc-v1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="info:srw/schema/1/dc-v1.1 http://www.loc.gov/standards/sru/dc-schema.xsd"> 46 <dc:title>できるWindows 10</dc:title> 47 <dc:creator>法林岳之, 一ケ谷兼乃, 清水理史, できるシリーズ編集部 著</dc:creator> 48 <dc:description>Home/Pro/Enterprise対応</dc:description> 49 <dc:description>索引あり</dc:description> 50 <dc:publisher>インプレス</dc:publisher> 51 <dc:language>jpn</dc:language> 52</srw_dc:dc> 53 54 1 55 56 57
回答2件
あなたの回答
tips
プレビュー