2015-04-21 7 views
0

Я хочу загрузить XML-файл с веб-сервера непосредственно в моем собственном каталоге.Загрузка XML-файла и его сохранение на внутреннем хранилище

Мой код для создания новой папки в внутренней памяти

File mydir = context.getDir("LENOX",Context.MODE_PRIVATE); 

File fileWithinDir = new File(mydir,"LENOX.xml"); 

Мой класс для загрузки XML-файлов:

public class XMLParser { 
ConnectionDetector cd = new ConnectionDetector(ListViewActivity.getAppContext()); 




public String getXMLFromUrl(String url) { 
    String xml = null; 

    if (cd.isConnectingToInternet()) { 
     try { 
      //defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      xml = EntityUtils.toString(httpEntity); 

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } else { 
     return null; 
    } 

    return xml; 
    //return xml 
} 

public Document getDomElement(String xml) { 

    Document doc = null; 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    try { 
     DocumentBuilder db = dbf.newDocumentBuilder(); 

     InputSource is = new InputSource(); 
     is.setCharacterStream(new StringReader(xml)); 

     doc = db.parse(new ByteArrayInputStream(xml.getBytes())); 
    } catch (ParserConfigurationException e) { 
     Log.e("Error Parser: ", e.getMessage()); 
     return null; 
    } catch (SAXException e) { 
     Log.e("Error SAX: ", e.getMessage()); 
     return null; 
    } catch (IOException e) { 
     Log.e("Error IO: ", e.getMessage()); 
     return null; 
    } 
    return doc; 
} 

public String getValue(Element item, String str) { 
    NodeList n = item.getElementsByTagName(str); 
    return this.getElementValue(n.item(0)); 
} 

public final String getElementValue(Node elem) { 
    Node child; 
    if (elem != null) { 
     if (elem.hasChildNodes()) { 
      for (child = elem.getFirstChild(); child != null; child = child.getNextSibling()) { 
       if (child.getNodeType() == Node.TEXT_NODE) { 
        return child.getNodeValue(); 
       } 
      } 
     } 
    } 
    return ""; 
} 

из here

фрагмент кода ... может быть, помогает понять

XMLParser parser = new XMLParser(); 
      String xml = parser.getXMLFromUrl("http://testsite.de/XXX.xml"); 

Есть ли фрагмент кода для создания файла в моем собственном каталоге из загруженного xml-файла?

+0

Google для 'android save text to file'. – greenapps

ответ

0

, если вы хотите написать строку внутри файла, вы можете использовать этот метод:

public static void writeStringToFile(String content, File file)throws IOException { 
     FileWriter writer = new FileWriter(file); 
     writer.write(content); 
     writer.flush(); 
     writer.close(); 
    } 

однако, я recomand использовать андроид SharedPreferences. это наиболее практично.

public static void writeStringToPreference(Context context,String tag,String value) 
    { 
    SharedPreferences sharedP = context.getSharedPreferences(nameSpace, O); 
    Editor editor=sharedP.edit(); 
    editor.putString(tag,value) 
    editor.commit(); 
    } 

public static String readStringToPreference(Context context,String tag) { 
    SharedPreferences sharedP = context.getSharedPreferences(nameSpace, O); 
    return sharedP.getString(tag); 
} 
+0

Спасибо! Это работает для меня! –