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

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

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

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

Java

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

XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

Q&A

解決済

2回答

509閲覧

JAVAからXMLファイルを開けない

hh_ww

総合スコア22

XML

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

Java

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

XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

0グッド

0クリップ

投稿2018/01/30 01:18

Android Studioを使用してJAVAからxmlファイルを開き、
xmlファイル内の文字列をglobals.XmlComDataDbNameに格納するプログラムを作りましたが、
実行すると以下のようなCouldn't openというエラーが出て、
saxParser.parse(new File(globals.httpserver + "/QRsystemCommonData.xml"), new XmlSaxSimpleReader());以降の処理が実行されません。
http://192.168.24.63にはDB等ではアクセスできて正常動作しています。
どうしたらよいでしょうか?

参考にしたサイトは以下です。
参考にしたサイト

JAVA

1 public void XmlSaxSimpleReader(SyokisetteiActivity syokisetteiActivity) throws IOException, ParserConfigurationException, SAXException { 2 SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); 3 SAXParser saxParser = saxParserFactory.newSAXParser(); 4 globals = (Globals)syokisetteiActivity.getApplication(); 5 saxParser.parse(new File("http://192.168.24.63/QRsystemCommonData.xml"), new XmlSaxSimpleReader()); 6 } 7 public void startDocument() { 8 9 } 10 public void startElement(String uri, String localName, String qName, Attributes attributes) { 11 12 } 13 public void characters(char[] ch, int offset, int length) { 14 15 globals.XmlComDataDbName[0] = String.valueOf(ch[0]); 16 } 17 public void endElement(String uri, String localName, String qName) { 18 19 } 20 public void endDocument(){ 21 22 } 23

xml(QRsystemCommonData.xml)

1<?xml version="1.0" encoding="UTF-8"?> 2<item>みかん</item>
W/System.err: java.io.IOException: Couldn't open file:///http:/192.168.24.63/QRsystemCommonData.xml W/System.err: at org.apache.harmony.xml.ExpatParser.openUrl(ExpatParser.java:755) W/System.err: at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:292) W/System.err: at javax.xml.parsers.SAXParser.parse(SAXParser.java:390) W/System.err: at javax.xml.parsers.SAXParser.parse(SAXParser.java:326) W/System.err: at com.example.root.qrsystemtest2.XmlSaxSimpleReader.XmlSaxSimpleReader(XmlSaxSimpleReader.java:22)

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

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

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

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

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

guest

回答2

0

ベストアンサー

ノーテストだが

SAXParserFactory fac = SAXParserFactory.newInstance(); AXParser parser = fac.newSAXParser(); XmlSaxSimpleReader reader = new XmlSaxSimpleReader(); URL url = new URL("http://192.168.24.63/QRsystemCommonData.xml"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); parser.parse(con.getInputStream(), reader);

こんなかんじかしら(HTTPから取得)

投稿2018/01/30 03:38

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hh_ww

2018/01/30 04:12

回答ありがとうございます。 参考にして確認してみたところ、以下の箇所でエラーが出ました。 調査していますが、原因がわかりましたらご教示ください。 parser.parse(con.getInputStream(), reader); ```エラー内容 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.root.qrsystemtest2, PID: 22843 android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:333) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356) at java.net.Socket.connect(Socket.java:605) at com.android.okhttp.internal.Platform.connectSocket(Platform.java:113) at com.android.okhttp.Connection.connectSocket(Connection.java:196) at com.android.okhttp.Connection.connect(Connection.java:172) at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367) at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:247) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:409) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:246) at com.example.root.qrsystemtest2.XmlSaxSimpleReader.XmlSaxSimpleReader(XmlSaxSimpleReader.java:35)★修正中ファイル ``` 以下のサイトと同じエラーのようですが、関係ありますでしょうか? http://garnote.com/2012/10/android-os-networkonmainthreadexception.html
hh_ww

2018/01/30 04:49

上記のエラーは、上にも書きましたサイトによると extends AsyncTask<String, String, String>をクラスに 追加することで解決できそうなのですが、 そのクラスにはすでに以下のようにextends DefaultHandlerが設定されています。 public class XmlSaxSimpleReader extends DefaultHandler { この場合、どうしたらよいでしょうか? 分かりましたら宜しくお願いいたします。
hh_ww

2018/01/30 05:40

質問内容が変わってきていますので、新たに別で質問をあげたいとおもいます。 ご対応ありがとうございました。
guest

0

IPアドレス的にLANだと思いますが、
見に行く端末がインターネット経由で接続しようとしている、
ということはありませんか?

投稿2018/01/30 01:41

apo

総合スコア349

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

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

apo

2018/01/30 03:08 編集

saxParser.parse(new File("http://192.168.24.63/QRsystemCommonData.xml"), new XmlSaxSimpleReader()); がうまく動いていないようですね。 saxParser.parse(new File("http://192.168.24.63/QRsystemCommonData.xml") で直接httpのファイルを指定できるのかわかりません。 別途、httpからQRsystemCommonData.xmlファイルをダウンロードするコードを書いて、saxParser.parseにはダウンロードしたファイルを指定したらいかがでしょうか?
退会済みユーザー

退会済みユーザー

2018/01/30 03:39

FILE では file:// プロトコルしか使えませんよ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問