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

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

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

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

Java

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

Q&A

解決済

1回答

1049閲覧

javaでRSS Readerを

NakaKou

総合スコア19

XML

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

Java

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

0グッド

0クリップ

投稿2019/03/16 00:49

###現状
javaを使ってRSSでお天気データをダウンロードして気温などを取得したいです。
お天気データはこれです。あと、参考にしたプログラムの例はこちらです。
具体的にはXMLEventReaderを使ったプログラムです。

###プログラム

java

1import java.net.URL; 2import java.io.InputStream; 3import javax.xml.stream.XMLEventReader; 4import javax.xml.stream.XMLInputFactory; 5import java.io.IOException; 6import javax.xml.namespace.QName; 7import javax.xml.stream.events.StartElement; 8import javax.xml.stream.events.XMLEvent; 9import javax.xml.stream.XMLStreamException; 10 11 12public class RssStation{ 13 QName want; 14 URL url; 15 String sURL; 16 InputStream bridge; 17 XMLInputFactory factoer; 18 XMLEventReader readXML; 19 20 void getXMLElement(String address,String tag){ 21 try{ 22 this.url = new URL(address); 23 want = new QName(tag); 24 bridge = url.openStream(); 25 factoer = XMLInputFactory.newInstance(); 26 readXML = factoer.createXMLEventReader(sURL,bridge); 27 XMLEvent event = null; 28 StartElement start = null; 29 while(readXML.hasNext()){ 30 event = readXML.peek(); 31 if (event.isStartElement()){ 32 start = event.asStartElement(); 33 if (want.equals(start.getName())){ 34/*>>>>>>>>>>>>>>*/System.out.println("titler"+readXML.getElementText()); 35 break; 36 } 37 } 38 readXML.nextEvent(); 39 } 40 }catch(IOException e){ 41 e.printStackTrace(); 42 }catch(XMLStreamException e){ 43 e.printStackTrace(); 44 }finally{ 45 try{ 46 if (bridge != null){ 47 bridge.close(); 48 } 49 if (readXML != null){ 50 readXML.close(); 51 } 52 }catch(IOException e){ 53 e.printStackTrace(); 54 }catch(XMLStreamException e){ 55 e.printStackTrace(); 56 } 57 } 58 } 59}

###問題・エラー
コンパイルでは問題はありません。でも実行エラーが出てしまいます。

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[2,36] Message: elementGetText() function expects text only elment but START_ELEMENT was encountered. at com.sun.xml.internal.stream.XMLEventReaderImpl.getElementText(XMLEventReaderImpl.java:140) at RssStation.getXMLElement(RssStation.java:34) at MyRss.main(MyRss.java:4)

START_ELEMENTがなんたらと言っているのは分かりますがasStartElement()で
START_ELEMENTになっていると思うのですが、どうしてでしょうか?

/>>>>>/のところでエラーは起っていると思うのですが、解決できません。

お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージをGoogle翻訳にかけてみました。

elementGetText()関数はテキストのみの要素を想定していますが、START_ELEMENTが見つかりました

質問者さんの想定とは反対にSTART_ELEMENTが返ってきているのが問題のようです。

投稿2019/03/16 14:03

javahack

総合スコア1088

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

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

NakaKou

2019/03/19 12:24

文を勘違いしていました。 問題は解決しました。ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問