2012-05-10 11 views
0

こんにちは私はFTPサーバーからXMLファイルを読み込み、それを解析しようとしています。XMLにAndroid FTPの入力ストリーム

私の文字列をinputsourceとして使用することはできません。 LogCatでファイルを読むことができ、ブラウザでXMlファイルを開くことができます。しかし、インプットソースとしてどのように文字列を使用するかはわかりません。

CODE:

public void readXML(){ 

    try { 
     Log.e("FTP", "Starting ftp session"); 

     FTPClient ftp = new FTPClient(); 

     Log.e("FTP", "Connecting to FTP"); 
     ftp.connect("ftp.domain.com"); 

     Log.e("FTP", "Providing credentials to FTP"); 
     ftp.login("user", "pswd"); 
     if(ftp.login("user", "pswd")){ 
      Log.e("FTP", "Was able to connect to FTP"); 
     } 

     ftp.enterLocalPassiveMode(); 
     ftp.changeWorkingDirectory("/folder/XML"); 

     Log.e("FTP", "Getting stream"); 
     InputStream inStream = ftp.retrieveFileStream("file.xml"); 
     InputStreamReader isr = new InputStreamReader(inStream, "UTF8"); 
     BufferedReader reader = new BufferedReader(isr); 

     String Input = ""; 
     Log.e("FTP", "Reading filestream"); 

     do{ 
      Input = Input + reader.readLine() + "\n"; 
      Log.e("FTP", reader.readLine()); 

     }while(reader.readLine()!=null);    

     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 

     Log.e("FTP", "Parsing inputsource"); 
     Document doc = db.parse(new InputSource(new StringReader(Input))); 
     doc.getDocumentElement().normalize(); 

     Log.e("FTP", "Creating nodelist"); 
     NodeList nodeList = doc.getElementsByTagName("TAG"); 

イムが不明にStringReaderは行くための正しい方法である場合。

EDIT:

public void readXML(){ 

    try { 
     Log.e("FTP", "Starting ftp session"); 

     FTPClient ftp = new FTPClient(); 

     Log.e("FTP", "Connecting to FTP"); 
     ftp.connect("ftp.domain.com"); 

     Log.e("FTP", "Providing credentials to FTP"); 
     ftp.login("user", "pswd"); 
     if(ftp.login("user", "pswd")){ 
      Log.e("FTP", "Was able to connect to FTP"); 
     } 

     ftp.enterLocalPassiveMode(); 
     ftp.changeWorkingDirectory("/folder/XML"); 

     Log.e("FTP", "Getting stream"); 
     InputStream inStream = ftp.retrieveFileStream("file.xml");   

     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 

     Log.e("FTP", "Parsing inputsource"); 
     Document doc = db.parse(new InputSource(inStream)); 
     doc.getDocumentElement().normalize(); 

     Log.e("FTP", "Creating nodelist"); 
     NodeList nodeList = doc.getElementsByTagName("TAG"); 
+0

あなたは、任意のエラーを取得していますか?もしそうなら、投稿してください。 'StringReader'から' InputSource'を作成することは完全に有効です。 – Rajesh

答えて

0

いくつかの提案/観測:あなたはなしInputStreamから直接InputSourceを作成することができます

  1. ラジェッシュ

    おかげでこれが私の解決策です中間体を有するものString

  2. 代わりStringの複数回追加することによってStringを作成するのではなく、交互の行(及びおそらく無効なXMLのスキッピングをもたらすであろう次のコードを使用してStringBuffer
  3. を使用することが効率的である - それは問題であってもよいです)あなたのケースで

    do{ 
        Input = Input + reader.readLine() + "\n"; 
        Log.e("FTP", reader.readLine()); 
    
    }while(reader.readLine()!=null); 
    
+0

感謝! ドキュメントdoc = db.parse(新しいInputSource(inStream)); – Patrick

関連する問題