• 締切済み

XMLのparseエラーについて

JavaのURLでWASにあるXMLファイルにアクセスし、その内容をcom.sun.xml.tree.XmlDocumentクラスのインすタンスを生成したいと思っています。 ソース抜粋 PrintWriter out = new PrintWriter(new OutputStreamWriter(con.getOutputStream(), "UTF-8")); out.print(xmlDoc.writeString()); out.flush(); out.close(); con.connect(); BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8")); String inputLine = null; while ((inputLine = in.readLine()) != null) { answer.append(inputLine); } new XmlDocument(is, false); 上記のnew XmlDocument(is, false);を実行したら、例外で落ちてしまいます。 エラー内容は、org.xml.sax.SAXParseException: com.sun.xml.parser/P-019 XMLの書式が悪いと思いためしに、 new XmlDocument(is, false);を実行する前に、XMLファイルを作成し、ブラウザで表示したところ正常でした。 原因がわかりません、皆さんよろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

while ((inputLine = in.readLine()) != null) { answer.append(inputLine); } を抜けたときに、ストリームから読み切っているからではないでしょうか?

関連するQ&A

  • XML ファイル parse 時の例外発生

    XML ファイル parse 時の例外発生 Java プログラムにて UTF-8 で書いた XML ファイルを DOM オブジェクトに読み込むときに、CJK Unified Ideograph Extension B などの (UTF-16 にて surrogate pair となるような) 字をコメント内に書くと、例外が発生します。何かよい回避方法は無いでしょうか。 例外は: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xd85a) was found in the comment. XML ファイルは encoding="UTF-8" としており、コメント以外のテキストにこれを書く分には、特に問題無く parse できています。 読み取りは DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setIgnoringComments(true); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse("hoge.xml"); などとしています。JDK のバージョンは 1.6.0_17-b04 on Windows Vista。 当該文字を "" で囲んだり、通るタグ記述の形のままコメント化したりもしましたが、だめでした。 以上、よろしくお願いいたします。

  • ファイルアップロードするHTMLを操作するJAVA

    はじめまして。 あさかと申します。 WebサーバーにあるファイルをアップロードするHTMLがあります。 そのHTMLに対して、JAVAからあたかもファイル転送をしたように このHTMLを操作したいと思います。 しかし、テストプログラムを作成したのですが、ファイルとして 判断されません。 どのへんがおかしいかご指摘下さい。 upload.html - <FORM ENCTYPE="multipart/form-data" ACTION="/1-29.php" METHOD=post> <INPUT TYPE=hidden name=MAX_FILE_SIZE value=10000000> 送信ファイル名<INPUT NAME=uploaded TYPE=file size=30 > <INPUT TYPE=submit value=アップロード> </FORM> upload.java -import java.net.*; import java.io.*; public class UpLoad1 {  public static void main(String[] args) {   try {    URL TestURL =    new URL("http://test.jp/upload.html");    URLConnection con =     TestURL .openConnection();    con.setDoOutput(true);    PrintWriter out =    new PrintWriter(con.getOutputStream());    out.print("uploaded=D:/Temp/aaa.txt");    out.close(); BufferedReader in = new BufferedReader(              new InputStreamReader(              con.getInputStream()));    String line;    while ((line = in.readLine()) != null) {    System.out.println(line);    }    in.close();   } catch (IOException e) {    e.printStackTrace();   }  } }

  • VB6.0でDOMを使用してXMLを編集したい

    VB6.0でDOMを使用して下記XMLを読込んで<著者 id="1234567">のidの内容を「1234567」→「9999999」に変更したいのですがどのようにしたらよいのかわからなくて困っています。 よろしくお願いします。 【SAMPLE.XML】 <?xml version='1.0' encoding="UTF-8" ?> <書籍情報> <著者 ="1234567"> <名前>磯野カツオ</名前> <性別>男性</性別> </著者> </書籍情報> 【VB6.0】 Dim xmlDocument As New MSXML2.DOMDocument If Not xmlDocument.Load("SAMPLE.XML") Then   MsgBox "XML Read Error!!!"   Exit Function End If '************************************************ 'どのようにコーディングしたらいいのでしょうか? '************************************************ Call xmlDocument.Save("SAMPLE01.XML")

  • サーブレットについて

    public class Server extends HttpServlet { PrintWriter out; BufferedReader in; String s; public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException,IOException { in = new BufferedReader(new InputStreamReader(req.getInputStream())); out = new PrintWriter(res.getOutputStream(),true); //文字列受信 s = in.readLine(); //送信 out.println(s); } } tomcatはマルチスレッドだと聞いたわけですが、このプログラムで、例えば、トムがアクセスしてきて、 s=in.readLine(); が実行されている間に2番目に接続してきたネコが out=new PrintWriter(); を実行してしまって out.println(s);で後から接続してきたネコに送信されるとゆうこともあるわけでしょうか?

    • ベストアンサー
    • Java
  • この各行のプログラムの意味を教えてください!

    各行のプログラムがなにをしてるかちょっとわからないので誰か教えてください><お願いします! PrintWriter out=new PrintWriter(socket.getOutStream(),true); out.println("hello,World!"); BufferedReader in=new BufferedReader( new InputStreamReader(socket.getInputStream()); String result=in.readLine();

    • ベストアンサー
    • Java
  • HTMLが表示されない

        try{       URL url = new URL("https://job.mycom.co.jp/07/regist.cgi");       URLConnection con = url.openConnection();       InputStream is = con.getInputStream();       BufferedReader br = new BufferedReader(new InputStreamReader(is,"EUC-JP"));       BufferedWriter bf = new BufferedWriter(new FileWriter("input.html"));       String temp = null;       while((temp = br.readLine()) != null){         bf.write(temp);       }       br.close();       bf.close();     }catch(Exception e){       e.printStackTrace();     }   } このやり方でHTMLを作成し、開くと、何も表示されません。 どなたか原因を教えてください>< ループ内を System.out.println(temp); に変えて実行するとソースがすべて表示されたので、tempの中身はちゃんと入っていると思われます。

    • ベストアンサー
    • Java
  • javaのエンコードについて?

    下記のプログラムでホームページの情報は読み取ることができるようになったのですが、一部ホームページ(UTF-8エンコードのホームページと思われる)、文字化けを起こして見ることができません。 解決する方法を、教えていただけないでしょうか? おねがいいたします。 import java.io.*; import java.net.*; class test{ public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.faireal.net/"); in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • 文字化けします。

    お世話になります。 ソケットでサーバとクライアントを接続しています。 コーディングの概略は次の通りです。 【クライアント】 PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"EUC_JP")); out.println("かきくけこ"); System.out.println(in.readLine()); 【サーバ】 PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"Shift_JIS")); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println(inputLine); out.println(inputLine); //←これはクライアントでも文字化けしない。 String s1 = "あいうえお"; String u1 = new String(s1.getBytes("xxxxx"), "yyyyy"); out.println(u1); //←文字化けする。 } お伺いしたいのは文字コード変換についてです。 サーバ:RedhatLinux クライアント:Windowsでして、 サーバ側コーディングの String s1 = "あいうえお"; としている文字列を クライアント側の // 読み込んだデータを表示 System.out.println(in.readLine()); で表示したいのですが、文字が化けて(????←このようになります)困っています。 文字コード変換しなければいけないと思うのですが、 getBytesを使うのでしょうか? もしgetBytesを使うならどのように書けばいいのかがわかりません。 分かりにくい説明で申し訳ありませんが、 ご教授ください。宜しくお願いします。

    • ベストアンサー
    • Java
  • javaプログラムのimportについて

    Javaプログラムでサンプルプログラムを実行したいのですが、 com.sun.xml.parser.Resolver;とcom.sun.xml.tree.XmlDocument; をimportするところでエラーがでてしまいます。 javaのビルド・パスで、JARファイルを追加しようと考えております が、上記の2つを含むJARファイルが置いてあるサイト(URL)が 分かりません。どうか教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • web.xmlの書き方2

    すいません下の質問なのですが フォルダ構成は WEB-INF |____classes___test___Test.class | |____jsp(空) | |____web.xml となっております。 あと質問に追加なのですが。 他の書籍のweb.xmlを参考にして web.xmlの書き出しの部分を <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> では無く、 <?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> にしてトライしてみたところ、そもそもTomcatを起動させる時点で多数のエラーが出ます。 Tomcatのエラーは 致命的: Parse Error at line 8 column -1: 要素タイプ "servlet-name" は宣言されて いません。 org.xml.sax.SAXParseException: 要素タイプ "servlet-name" は宣言されていません。 といった物が多数でます。 これについてもお答え願えれば幸いです。 それでは失礼いたします。

    • ベストアンサー
    • Java

専門家に質問してみよう