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

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

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

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

受付中

ランキング形式にしたいが切り取れない またその各文字要素を順に入力していきたい

nekotatinu
nekotatinu

総合スコア4

Java

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

2回答

-1評価

0クリップ

278閲覧

投稿2021/12/29 10:08

実現したいこと

rssからとってきた情報を必要な部分だけ取り出して、その情報を順に入力していく

 title要素を取り出せてその中から必要な物だけ切り取れたが、上位n個を取り出すことができない
その取り出した文字を区切って順に入力したい

java

コード import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.bootstrap.DOMImplementationRegistry; import org.w3c.dom.ls.DOMImplementationLS; import org.w3c.dom.ls.LSInput; import org.w3c.dom.ls.LSParser; //https://qiita.com/tsukakei/items/41bc7f3827407f8f37e8 //これでサイト閲覧者数がわかるプログラムをうてる public class web { public static void main(String[] arsg) throws Exception { web viewer = new web(); try { //String url ="http://192.168.1.6:8097/buckets?buckets=true"; String url ="http://k-ani.com/rss/all.rss"; HttpURLConnection urlconn = getHttpsConnection(url); //DOMnoyatudayo InputStream inputStream = urlconn.getInputStream(); Document document = viewer.buildDocument(inputStream, "utf-8"); viewer.showTree(document.getDocumentElement()); //データの読み取り BufferedReader reader = new BufferedReader(new InputStreamReader( urlconn.getInputStream(), "utf8")); String line; StringBuilder sb = new StringBuilder(); while ((line = reader.readLine()) != null) { sb.append(line); } reader.close(); urlconn.disconnect(); System.out.println(sb.toString()); } catch (Exception e) { e.printStackTrace(); } } private static HttpURLConnection getHttpsConnection(String url) throws Exception { HttpURLConnection urlconn = null; URL connectURL = new URL(url); // https接続の場合 if ("https".equals(connectURL.getProtocol())) { //証明書情報 全て空を返す TrustManager[] tm = { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } } }; SSLContext sslcontext = SSLContext.getInstance("SSL"); sslcontext.init(null, tm, null); //ホスト名の検証ルール 何が来てもtrueを返す HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }); urlconn = (HttpsURLConnection) connectURL.openConnection(); ((HttpsURLConnection)urlconn).setSSLSocketFactory(sslcontext.getSocketFactory()); // http接続の場合 } else { urlconn = (HttpURLConnection) connectURL.openConnection(); } // http,https共通 urlconn.setRequestMethod("GET"); //接続 urlconn.connect(); return urlconn; } /** DOM Tree の構築 */ public Document buildDocument(InputStream inputStream, String encoding) { Document document = null; try { // DOM実装(implementation)の用意 (Load and Save用) DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); DOMImplementationLS implementation = (DOMImplementationLS)registry.getDOMImplementation("XML 1.0"); // 読み込み対象の用意 LSInput input = implementation.createLSInput(); input.setByteStream(inputStream); input.setEncoding(encoding); // 構文解析器(parser)の用意 LSParser parser = implementation.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null); parser.getDomConfig().setParameter("namespaces", false); // DOMの構築 document = parser.parse(input); } catch (Exception e) { e.printStackTrace(); } return document; } /** 引数 node 以下の tree を表示 */ public void showTree(Node node) { for(Node current = node.getFirstChild(); current != null; current = current.getNextSibling()) { if(current.getNodeType() == Node.ELEMENT_NODE) { // ノードは要素? String nodeName = current.getNodeName(); // 中括弧 { } を使って階層を表現 if(current.getNodeName().equals("title")) { // title要素だったら String title = current.getTextContent(); // 子孫要素からテキスト部分を得る //切り出した文字列を表示 //System.out.println(title); if (title.contains("【")) { String pin =title.substring(1, title.indexOf("】")); // System.out.println(pin); String[] words = pin.split("<br>",5); for (String word : words) { System.out.println( word); } } // System.out.println(title.substring(0, title.indexOf("】"))); } //if(current.getNodeName().equals("link")) { // link要素だったら //String link = current.getTextContent(); // 子孫要素からテキスト部分を得る //System.out.println(link); //} //System.out.println(nodeName + " {"); showTree(current); // さらに子ノードを見る (再帰) //System.out.println("}"); } else if(current.getNodeType() == Node.TEXT_NODE // ノードはテキスト? && current.getNodeValue().trim().length() != 0) { //System.out.println(current.getNodeValue()); } else if(current.getNodeType() == Node.CDATA_SECTION_NODE) { // ノードはCDATA? //System.out.println(current.getNodeValue()); } // HTMLタグなどを含む ; // 上記以外のノードでは何もしない } ////////////////////////////////////////////////////////////////////////////////////// } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jimbe

2021/12/29 10:24

できない、したい・・・では無く、具体的に何が分からないのかをお書きください。
nekotatinu

2021/12/29 11:08

rssのtitle要素をとりだしたが、そのtitle要素を上位5つめまで取得してあとは切り捨てたいのですが、その方法がわからない
jimbe

2021/12/30 08:55 編集

> rssのtitle要素をとりだしたが 意味不明や通らないコードが散見されますが、どの変数に「とりだした」のでしょうか。 > 上位5つめ とは? 出現順で最初の 5 つでしょうか?

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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