Springen naar inhoud


- - - - -
Solved

Xml Bestand Vanop Internet Uitlezen In Android Studio



  • Log in a.u.b. om te beantwoorden
Er zijn 1 reacties in dit onderwerp

#1 Prior

Prior

    Rookie Developer

  • Leden
  • Pip
  • 34 berichten
    Laatst bezocht gisteren, 22:55

Geplaatst op 10 januari 2015 - 22:53

Ik heb problemen om een xml file correct uit te lezen in android studio

De xml file staat op internet bij Parkodata te Kortrijk. http://www.parkodata...a/ParkoInfo.xml

Hiervoor gebruik ik 2 methoden die ik in een klasse Tools stop:

Code:
public static String GET(String url){
	 InputStream inputStream = null;
	 String result = "";
	 try {
		 // create HttpClient
		 HttpClient httpclient = new DefaultHttpClient();
		 // make GET request to the given URL
		 HttpResponse httpResponse = httpclient.execute(new HttpGet(url));
		 // receive response as inputStream
		 inputStream = httpResponse.getEntity().getContent();
		 // convert inputstream to string
		 if(inputStream != null)
			 result = convertInputStreamToString(inputStream);
		 else
			 result = "Did not work!";
	 } catch (Exception e) {
		 Log.d("InputStream", e.getLocalizedMessage());
	 }
	 return result;
}
private static String convertInputStreamToString(InputStream inputStream) throws IOException {
	 BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
	 String line = "";
	 String result = "";
	 while((line = bufferedReader.readLine()) != null)
		 result += line;
	 inputStream.close();
	 return result;
}


Deze methoden worden aangeroepen met een private class AsyncTask.  Deze code staat binnenin een Activity:

Code:
private class HttpAsyncTask extends AsyncTask<String, Void, String> {
	 @Override
	 protected String doInBackground(String... urls) {
		 return Tools.GET(urls[0]);
	 }
	 // onPostExecute displays the results of the AsyncTask.
	 @Override
	 protected void onPostExecute(String result) {
		 Toast.makeText(getBaseContext(), "Received!", Toast.LENGTH_LONG).show();
		 EditText resultaat = (EditText) findViewById(R.id.etVoorlopigResultaat);
		 Log.i(TAG, "result : " + result.toString());


De parameter String result van bij de methode onPostExecute levert dan op zoals het op Internet staat:

Code:
<?xml version="1.0" encoding="utf-8"?><ITSPS xmlns:xsi="http://www.w3.org/20...chema-instance" xsi:noNamespaceSchemaLocation="ITSPS20130117.xsd"> <Authority> <GeneralInfo>	 <IDInfo>	 <Name> ... etcera


Maar hoe gaat het nu verder om bij het root element Authority tag te komen in de xml file?

Ik heb al geprobeerd andere tutorials van XMLPullParser of Xml dom parsing of sax parsing op te volgen maar zonder veel resultaat.
Op bovenstaande manier krijg ik enkel de xml uitgelezen.

Nochtans denk ik dat het zou moeten werken met bovenstaande aanpak qua methoden en asynctask maar ben niet zeker ...

Ook is het voor mij de eerste keer dat ik een ITSPS standaard zie (ITS Parking Specification , ITSPS20130117.xsd) :S
Moet het stukje <?xml version ... >niet verwijderd worden uit de variabele result, om dan te beginnen bij tag Authority?

Iemand die mij advies wil geven hoe ik best hiervoor te werk ga?

#2 Prior

Prior

    Rookie Developer

  • Leden
  • Pip
  • 34 berichten
    Laatst bezocht gisteren, 22:55

Geplaatst op 11 januari 2015 - 20:13

Blijkbaar te vroeg gepanikeerd, kheb grotendeels gevonden van wat ik wou.

Er moest nog een stuk bijkomen na Tools.GET(url), alleen is het een huzarenstukje om het gewenste weer te geven met gebruik van logging :)

Code:
@Override
protected String doInBackground(String... urls) {
String response = Tools.GET(URL);

DocumentBuilderFactory factory;
DocumentBuilder builder;
Document document;
try {
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();

String xml = response;
InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8"));

document = builder.parse(is);
Log.i(TAG, "document : " + document);

// normalize text representation
document.getDocumentElement().normalize ();

Log.i(TAG, "Root element of the doc is " + document.getDocumentElement().getNodeName());

NodeList nodeListOffstreetParking = document.getElementsByTagName("OffstreetParking");
Log.i(TAG, "nodelist offstreetparking : " + nodeListOffstreetParking);
int totalOffstreetParking = nodeListOffstreetParking.getLength();
Log.i(TAG, "Total number of OffstreetParking : " + totalOffstreetParking);


for (int i = 0; i < nodeListOffstreetParking.getLength(); i++) {
Node node = nodeListOffstreetParking.item(i);
Log.i(TAG, "node : " + node.getTextContent());
tekst = node.getTextContent();

Element currentNode = (Element) nodeListOffstreetParking.item(i);
//Log.i(TAG, "currentnode : " + currentNode.getTextContent());
}
}
catch(Exception e){

}
return response;

}







Ook met taq Solved voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[Solved] Untitled 1

Met dank aan PascalBianca die tot op heden alles bijhoud sinds anno dec 2010)
Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
vbib.be - vbnet.be - vbdotnet.be - visualbasic.be