質問: doc.getElementsByTagName("ns2:Height Units=\"inches\""); //サイズ、記載方法がわからず for(int i=0; iA1VC38T7YXB5284860434730単行本(ソフトカバー)Charles TanfordJacqueline Reynolds浜窪 隆雄他5名0.66929133798.2677165275.8267716476falseエヌ・ティー・エスjapanesePublished3024.00JPYエヌ・ティー・エス3420.86614173148.42519684185.90551180501.0582188576BookABIS_BOOK2018-03-30エヌ・ティー・エスhttp://ecx.images-amazon.com/images/I/61b3ceNG8jL._SL75_.jpg7553エヌ・ティー・エスNATURE'S ROBOTS―それはタンパク質研究の壮大な歴史book_display_on_website3612265007967449216245237efe54c2-8a52-4b16-9cef-466971ff6aa6 ```
回答: タグ(要素)と属性がごっちゃになっているようです。 例えば `` の場合、以下のようになります。 (正確には名前空間(namespace)の説明も必要ですが、今回は不要なので省略) * タグ名(要素名): `ns2:Creator` * 属性名: `Role` * 属性値: `著` ソースコードを見ると `doc.getElementsByTagName("ns2:Creator Role=\".*\"")` と書かれていますが、引数に指定できるのはタグ名(要素名)だけです。なので、`doc.getElementsByTagName("ns2:Creator")`のようにする必要があります。 では`Role`はどのように取得するのかというと、 `Element#getAttribute()` メソッドを使う必要があります。また、`` 〜 `` で囲まれたテキストは `Element#getTextContent()` メソッドを使って取得します。 最終的には以下のようにすれば取得できます(Creatorのみ対応)。 ``` // 省略 NodeList nodesCreator = doc.getElementsByTagName("ns2:Creator"); // 省略 for (int i = 0; i < nodesTitle.getLength(); i++) { // 省略 for (int j = 0; j < nodesCreator.getLength(); j++) { Element creator = (Element) nodesCreator.item(j); String role = creator.getAttribute("Role"); String creatorName = creator.getTextContent(); System.out.println(role + ":" + creatorName); } } ```