質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

Q&A

解決済

1回答

1412閲覧

JavaでXMLの情報の取得の仕方。

onoko

総合スコア40

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

0グッド

0クリップ

投稿2021/10/05 01:08

画面に書籍のISBNを入力して、国会図書館の書誌情報XMLから引っ張り情報を自動で登録するJavaのwebアプリを作っています。通信でデータを獲得するまではうまくいっているようですが、初挑戦にしては複雑な構造のXMLで情報が取得できません。下記の検索部分のコーデイングをどう変えたらよいか教えてください。取得する情報は次の通りです。よろしくお願いします。

内容   XMLのタグ
書名   dc:title
著者名 dc:creator
出版者  dc:publisher
分類   <lst name="NDC">
出版年  <lst name="ISSUED_DATE"><int name="1964'(例)> 属性nameの値を取得

Java

1package model; 2 3import java.net.HttpURLConnection; 4import java.net.URL; 5import java.util.Arrays; 6 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 HttpURLConnection http = (HttpURLConnection)url.openConnection(); 25 http.setDoOutput(true); 26 http.setUseCaches(false); 27 http.setRequestMethod("GET"); 28 http.connect(); 29 30 DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); 31 DocumentBuilder builder = dbfactory.newDocumentBuilder(); 32 Element element = builder.parse(http.getInputStream()).getDocumentElement(); 33 34 35 data[5] = ISBN; 36 NodeList nodeList = element.getChildNodes(); 37 for(int i=0;i<nodeList.getLength();i++) { 38 Node node = nodeList.item(i); 39 if(node.getNodeType()== Node.ELEMENT_NODE) { 40 Element name = (Element)node; 41 System.out.println(node.getTextContent()); 42 if(name.getNodeName().equals("extraResponseData")) { 43 data[3] = ((Element) ((NodeList) node.getFirstChild()).item(1).getFirstChild()).getAttribute("name"); 44 data[4] = ((Element) ((NodeList) node.getFirstChild()).item(2).getFirstChild()).getAttribute("name"); 45 46 47 } 48 49 50 51 if(name.getNodeName().equals("records")) { 52 data[0]=((Element)element.getElementsByTagName("dc:title")).getTextContent(); 53 data[1]=((Element)element.getElementsByTagName("dc:creator")).getTextContent(); 54 data[2]=((Element)element.getElementsByTagName("dc:publisher")).getTextContent(); 55 56 } 57 } 58 } 59 60 61 http.disconnect(); 62 } 63 catch(Exception e) { 64 65 } 66 return data; 67 } 68}

XML

1<searchRetrieveResponse xmlns="http://www.loc.gov/zing/srw/"> 2<version>1.2</version> 3<numberOfRecords>1</numberOfRecords> 4<nextRecordPosition>0</nextRecordPosition> 5<extraResponseData> <facets> <lst name="REPOSITORY_NO"> <int name="R100000001">1</int> <int name="R100000002">1</int> </lst> <lst name="NDC"> </lst> <lst name="ISSUED_DATE"> <int name="2015">1</int> </lst> <lst name="LIBRARY"> <int name="さいたま市立中央図書館">1</int> <int name="国立国会図書館">1</int> <int name="堺市立中央図書館">1</int> <int name="大阪市立図書館">1</int> <int name="大阪府立中央図書館">1</int> <int name="奈良県立図書情報館">1</int> <int name="山口県立山口図書館">1</int> <int name="山形県立図書館">1</int> <int name="川崎市立図書館">1</int> <int name="新潟県立図書館">1</int> <int name="札幌市中央図書館">1</int> <int name="栃木県立図書館">1</int> <int name="沖縄県立図書館">1</int> <int name="滋賀県立図書館">1</int> <int name="県立長野図書館">1</int> <int name="福岡市総合図書館">1</int> <int name="群馬県立図書館">1</int> <int name="若狭図書学習センター">1</int> <int name="長崎県立長崎図書館">1</int> <int name="香川県立図書館">1</int> <int name="鳥取県立図書館">1</int> </lst> </facets> </extraResponseData> 6<records> 7<record> 8<recordSchema>info:srw/schema/1/dc-v1.1</recordSchema> 9<recordPacking>string</recordPacking> 10<recordData> <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"> <dc:title>できるWindows 10</dc:title> <dc:creator>法林岳之, 一ケ谷兼乃, 清水理史, できるシリーズ編集部 著</dc:creator> <dc:description>Home/Pro/Enterprise対応</dc:description> <dc:description>索引あり</dc:description> <dc:publisher>インプレス</dc:publisher> <dc:language>jpn</dc:language> </srw_dc:dc> </recordData> 11<recordPosition>1</recordPosition> 12</record> 13</records> 14</searchRetrieveResponse>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaina

2021/10/05 01:28

質問者さんは何処までご自分でやって何が分からないのでしょうか? xmlからの情報の取得が分からないのであれば、まずwebアプリでは無く、 xmlからの情報の取得部分だけのサンプルプログラムを作成して試してみることが 必要かと思いますが、実施した上で分からないのでしょうか? 今のままだと低評価で指摘されている通り丸投げになっていますので、試したことを追記して下さい。 もし、サンプルプログラムを作成して自分で調査していないのであれば実施した上で それでも解決しないのであればその内容を追記して下さい。
dodox86

2021/10/05 01:54

私は低評価をしていませんが、 > 下記の検索部分のコーデイングをどう変えたらよいか教えてください。 こちらの質問に限らずたまにこのような要望を見ますが、読んだ者には「何だかもう訳分かんないから、とにかく動くコード教えて。」という風に取れます。往々にして自分のコードのどの部分にどのような問題があるのかを把握されていないことが多く、良い印象は無いですね。
onoko

2021/10/05 02:32

JavaでXMLの取得の仕方について解説した記事は、JavaScriptなら多いのですが、ネット上にあまりなくて最初に文書全体を取得しているのを知るのにも一苦労でした。そのせいもありよくわかっていません。この前に作ったXMLの構造をたどろうとして、途中の階層までうまくいったコードがありますが勉強不足が原因と思われますので、ここで質問を取り下げます。
guest

回答1

0

自己解決

さらに調べて自己解決することにしました。

投稿2021/10/05 02:34

onoko

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問