Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

peste

Importar RSS para aplicação android

Mensagens Recomendadas

peste

Boa tarde

Na empresa onde estou a estagiar pediram para fazer uma aplicação em android, algo que ainda nao tinha experimentado e achei que seria muito bom aprender, e estou a usar o eclipse com o sdk manager.

Essa aplicação é para efectuar o seguinte:

Eles tem uma RSS no site deles que contém paginas web feitos por eles para assim poderem apresentar ao futuros clientes a partir de um tablet ou de um tlm.

Gostava que me dessem uma ajuda, já andei a pesquisar pela net, mas nao tenho conseguido, se puderem ajudar agradecia :) .

Cumps.


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Só tens é que especificar as dúvidas que tenhas. No fundo só tens que sacar o XML, parsing e colocas a informação nos sítios (assumindo que estás a fazer um interface custom e não a apresentar uma WebView).

Editado por KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
peste

Boas KTachyon.

Tenho experimentando alguns exemplos que existe na net, mas nao correm, ou nao mostram

Vou ter que ver como eles fizeram e tentar aventurar-me e criar.

Basicamente é isso, importar o XML, que tem como conteudo o titulo do site, o website, e descricao.

Uma duvida, tenho que ao ler o xml dividir em variaveis certo? com o os nomes especificos do xml?

Abraço


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Sim, mas para isso já tens bibliotecas prontas, inclusive no SDK do Android: http://developer.android.com/training/basics/network-ops/xml.html


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
peste

obrigado pela sugestão, vou ver a informação que tu indicaste.

Também experimentei uma aplicação para ver como funcionava.

E gostei do funcionamento dela, onde usas o xmlparsing, e depois na apresentação do xml numa listview, e ao clicares em casa titulo, ele abre uma pagina com a informação.


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
peste

Boa tarde

Alguem pode ajudar???

Ao correr a aplicação da-me um erro e fecha a aplicação

E então fui ver o LogCat para ver que erros aparece

Aparece os seguintes

03-11 16:47:03.367: E/AndroidRuntime(1618): FATAL EXCEPTION: main
03-11 16:47:03.367: E/AndroidRuntime(1618): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.exemplo.goxml/com.exemplo.goxml.GoXmlActivity}: java.lang.NullPointerException
03-11 16:47:03.367: E/AndroidRuntime(1618):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at android.os.Looper.loop(Looper.java:123)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at android.app.ActivityThread.main(ActivityThread.java:4627)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at java.lang.reflect.Method.invokeNative(Native Method)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at java.lang.reflect.Method.invoke(Method.java:521)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at dalvik.system.NativeStart.main(Native Method)
03-11 16:47:03.367: E/AndroidRuntime(1618): Caused by: java.lang.NullPointerException
03-11 16:47:03.367: E/AndroidRuntime(1618):  at java.io.StringReader.<init>(StringReader.java:48)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at com.exemplo.goxml.XMLParser.getDomElement(XMLParser.java:72)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at com.exemplo.goxml.GoXmlActivity.onCreate(GoXmlActivity.java:39)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-11 16:47:03.367: E/AndroidRuntime(1618):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
03-11 16:47:03.367: E/AndroidRuntime(1618):  ... 11 more

Da erro na linha 72 do XMLParser e linha 39 do GoXmlActivity.

XMLParser:

package com.exemplo.goxml;
import java.io.IOException;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import android.util.Log;
public class XMLParser {
// constructor
public XMLParser() {
}
/**
 * Getting XML from URL making HTTP request
 * @param url string
 * */
public String getXmlFromUrl(String url) {
 String xml = null;
 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();
 }
 // return XML
 return xml;
}

/**
 * Getting XML DOM element
 * @param XML string
 * */
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(is);
  } catch (ParserConfigurationException e) {
   Log.e("Error: ", e.getMessage());
   return null;
  } catch (SAXException e) {
   Log.e("Error: ", e.getMessage());
		 return null;
  } catch (IOException e) {
   Log.e("Error: ", e.getMessage());
   return null;
  }
	 return doc;
}

/** Getting node value
  * @param elem element
  */
 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 "";
 }

 /**
  * Getting node value
  * @param Element node
  * @param key string
  * */
 public String getValue(Element item, String str) { 
  NodeList n = item.getElementsByTagName(str); 
  return this.getElementValue(n.item(0));
 }
}

GoXmlActivity:

package com.exemplo.goxml;
import java.util.ArrayList;
import java.util.HashMap;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class GoXmlActivity extends ListActivity {
// All static variables
static final String URL = "http://feeds.feedburner.com/GoFoxPortfolioBlogPT?format=xml";
// XML node keys
static final String KEY_ITEM = "item"; // parent node
static final String KEY_TITLE = "title";
static final String KEY_DESC = "description";
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
 XMLParser parser = new XMLParser();
 String xml = parser.getXmlFromUrl(URL); // getting XML
 Document doc = parser.getDomElement(xml); // getting DOM element
 NodeList nl = doc.getElementsByTagName(KEY_ITEM);
 // looping through all item nodes <item>
 for (int i = 0; i < nl.getLength(); i++) {
  // creating new HashMap
  HashMap<String, String> map = new HashMap<String, String>();
  Element e = (Element) nl.item(i);
  // adding each child node to HashMap key => value
  map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
  map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
  // adding HashList to ArrayList
  menuItems.add(map);
 }
 // Adding menuItems to ListView
 ListAdapter adapter = new SimpleAdapter(this, menuItems,
   R.layout.list_web,
   new String[] { KEY_TITLE, KEY_DESC}, new int[] {
  R.id.title, R.id.description});
 setListAdapter(adapter);
 // selecting single ListView item
 ListView lv = getListView();
 lv.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view,
 int position, long id) {
   // getting values from selected ListItem
   String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
   String description = ((TextView) view.findViewById(R.id.description)).getText().toString();

   // Starting new intent
   Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
   in.putExtra(KEY_TITLE, title);
   in.putExtra(KEY_DESC, description);
   startActivity(in);
  }
 });
}
}

Podem Ajudar?

Cumps


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Acredito que se fizeres um print da variável xml te deve dar null, mas confirma isso. O link devolve uma feed, mas o emulador/dispositivo pode não estar a aceder por alguma razão.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
peste

ja consegui importar o xml, agora o problema e que num node do xml tem algumas tags de html

vou ter que passar converter os html para conseguir imprimir


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
peste

Já consegui que ele me importa-se o conteúdo

só que tive que alterar umas linhas de código por causa do seguinte.

Como os itens que eu quero importar do xml, há um (description) que contém uma imagem e alguns tags de html

tive que usar isto para poder apresentar o conteúdo

map.put(KEY_DESC, Html.fromHtml(parser.getValue(e, KEY_DESC)));

só que ao apresentar o conteúdo, onde tem a imagem aparece uma quadrado pequeno tracejado com as letras obj.

sei que é a imagem.

existe algo que de para apresentar a imagem. já experimentei imprimir numa webview não mostra.

obrigado pela ajuda até agora, abraço.


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
peste

se usar uma imageview ele mostra tambem o texto????

É que eu quero apresentar a imagem e o texto...

tipo na minha string description tenho isto:

Giant Mind: Marla Pais HFP <img src="http://www.gofox.pt/files/images/19092426022013_imagemprincipal-marlapais.jpg" alt="Giant Mind: Marla Pais HFP" title="Giant Mind: Marla Pais HFP"/> <h4> Descrição</h4> <p> Novo website da marca Marla Pais, da empresa HFP, afirma uma nova identidade on-line, que lhe permite expandir a rede de contactos via internet, e manter o seu publico alvo actualizado acerca dos produtos da marca. O novo website pretende disponibilizar uma estrutura de conteudos concisa que permita ao utilizador aceder a uma visão geral da oferta desta empresa especializada no design e produção de artigos em cortiça.</p> <p> </p> <h4> Objectivos:</h4> <p> - Divulgar a oferta de serviços;</p> <p> - Fácil acesso ao catálogo de produtos;</p> <p> - Posicionar a empresa e marca nos motores de busca;</p> <p> </p> <h4> Soluções:</h4> <p> - Fácil acesso à informação em todo o website;</p> <p> - Optimização para motores de busca;</p> <p> - Compatibilização com os principais suportes móveis;</p> <p> - Disponibilização de catálogo de produtos;</p> <p> - Desenvolvimento de uma nova imagem on-line moderna e enquadrada na sua área de acção;</p> <p> </p> <table> <tbody> <tr> <td style="width: 48%"> <h4> Hiperligação</h4> </td> <td style="width: 4%"> </td> <td style="width: 48%"> <h4> Data de Criação</h4> </td> </tr> <tr> <td style="width: 48%"> <a href="http://www.hfpcork.com" target="_blank">www.hfpcork.com</a></td> <td style="width: 4%"> </td> <td style="width: 48%"> Fevereiro 2013</td> </tr> </tbody> </table> <p> </p>

e eu so quero buscar isto para imprimir a imagem:

<img src="http://www.gofox.pt/files/images/19092426022013_imagemprincipal-marlapais.jpg" alt="Giant Mind: Marla Pais HFP" title="Giant Mind: Marla Pais HFP"/>

e tava a pensar buscar esse link, apresentar a imagem, o na textview mostrar o resto do texto.

Editado por peste

Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gravecard

Se eu percebi queres algo como isto?

screen1sx.png

Se isso vais que definir um layout, para as linha da tua lista. Esse layout irá conter uma imageview (para a imagem) e uma textview ou duas para o texto que queres apresentar:

list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<ImageView
 android:id="@+id/image"/>

<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>

<TextView
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>

</LinearLayout>

Não sei se isso fica alinhado, é só um exemplo.

Editado por Gravecard

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
peste

Boas Gravecard, sim eu mais ou menos isso

ja tenho dois layouts

um com os titulos:

semttuloxxz.png

e outro com informação detalhadas

semttulo2ad.png

ao clikares no titulo, ele abre o outro layout.

como podes ver aparece ola eu sou o pedro, e ai vai ser uma imageview.

o texto abaixo é o descripition que tem a informação toda, o onde diz obj em pequenino, é a imagem que contem, mas nao consegue abrir.

ja experimentei pesquisar com RegEx no description o link para agora tenho o codgio assim

AndroidXMLParsingActivity:

package com.androidhive.xmlparsing;
import java.util.ArrayList;
import java.util.HashMap;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class AndroidXMLParsingActivity extends ListActivity {
// All static variables
//static final String URL = "http://api.androidhive.info/pizza/?format=xml";
static final String URL = "http://www.gofox.pt/rss/feed_pt.xml";
// XML node keys
/*static final String KEY_ITEM = "item"; // parent node
static final String KEY_ID = "id";
static final String KEY_NAME = "name";
static final String KEY_COST = "cost";
static final String KEY_DESC = "description";*/
static final String KEY_ITEM = "item"; // parent node
static final String KEY_TITLE="title";
static final String KEY_LINK="link";
static final String KEY_DESC = "description";
static final String KEY_PUB="pubDate";
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 //ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
 ArrayList<HashMap<String, Spanned>> menuItems = new ArrayList<HashMap<String, Spanned>>();
 XMLParser parser = new XMLParser();
 String xml = parser.getXmlFromUrl(URL); // getting XML
 Document doc = parser.getDomElement(xml); // getting DOM element
 NodeList nl = doc.getElementsByTagName(KEY_ITEM);
 // looping through all item nodes <item>
 for (int i = 0; i < nl.getLength(); i++) {
  // creating new HashMap
  //HashMap<String, String> map = new HashMap<String, String>();
  HashMap<String, Spanned> map = new HashMap<String, Spanned>();
  Element e = (Element) nl.item(i);
  // adding each child node to HashMap key => value
  /*map.put(KEY_ID, parser.getValue(e, KEY_ID));
  map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
  map.put(KEY_COST, "Rs." + parser.getValue(e, KEY_COST));
  map.put(KEY_DESC, parser.getValue(e, KEY_DESC));*/
  map.put(KEY_TITLE, Html.fromHtml(parser.getValue(e, KEY_TITLE)));
  map.put(KEY_LINK, Html.fromHtml(parser.getValue(e, KEY_LINK)));
  map.put(KEY_DESC, Html.fromHtml(parser.getValue(e, KEY_DESC)));
  map.put(KEY_PUB, Html.fromHtml(parser.getValue(e, KEY_PUB)));
  // adding HashList to ArrayList
  menuItems.add(map);
 }
 // Adding menuItems to ListView
 ListAdapter adapter = new SimpleAdapter(this, menuItems,
   R.layout.list_item,
   new String[] { KEY_TITLE, KEY_LINK, KEY_DESC, KEY_PUB }, new int[] {
  R.id.title, R.id.link,R.id.desciption, R.id.pub });

 setListAdapter(adapter);
 // selecting single ListView item
 ListView lv = getListView();
 lv.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view,
 int position, long id) {
   // getting values from selected ListItem
   String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
   String pub = ((TextView) view.findViewById(R.id.pub)).getText().toString();
   String link = ((TextView) view.findViewById(R.id.link)).getText().toString();
   String description = ((TextView) view.findViewById(R.id.desciption)).getText().toString();



   // Starting new intent
   Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
   in.putExtra(KEY_TITLE, title);
   in.putExtra(KEY_LINK,link);
   in.putExtra(KEY_PUB, pub);
   in.putExtra(KEY_DESC, description);
   startActivity(in);
  }
 });
}
}

SingleMenuItemActivity:

package com.androidhive.xmlparsing;

import java.util.regex.Pattern;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
public class SingleMenuItemActivity  extends Activity {

// XML node keys
static final String KEY_TITLE = "title";
static final String KEY_PUB = "pubDate";
static final String KEY_DESC = "description";
static final String KEY_LINK="link";
@Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.single_list_item);

    // getting intent data
    Intent in = getIntent();

    // Get XML values from previous intent
    String title = in.getStringExtra(KEY_TITLE);
    String pub = in.getStringExtra(KEY_PUB);
    String description = in.getStringExtra(KEY_DESC);
    String link = in.getStringExtra(KEY_LINK);

    String imageSource = getMatch("<\\s*img\\s*[^>]+src\\s*=\\s*(['\"]?)(.*?)\\1", description, 2);


    // Displaying all values on the screen
    TextView lblTitle = (TextView) findViewById(R.id.title_label);
    TextView lblLink = (TextView) findViewById(R.id.link_label);
    TextView lblPub = (TextView) findViewById(R.id.pub_label);
    TextView lblDesc = (TextView) findViewById(R.id.description_label);
    ImageView lblImage=(ImageView) findViewById(R.id.image_label);
    //WebView lblDesc = (WebView) findViewById(R.id.description_label);

    Bitmap bm = BitmapFactory.decodeFile(imageSource);


    lblTitle.setText(title);
    lblLink.setText(link);
    lblPub.setText(pub);
    lblDesc.setText(description);
    lblImage.setImageBitmap(bm);
    //lblDesc.loadDataWithBaseURL(null,description, "text/html", "UTF-8", null);
    //lblDesc.loadData(description, "text/html", "UTF-8");
    //lblDesc.setText(Html.fromHtml(description, imgGetter, null));




   }
public static String getMatch(String patternString, String text, int groupIndex){
 Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE | Pattern.DOTALL );
 return RegEx.getMatch(pattern, text, groupIndex);
}
/*public static String getMatch(Pattern pattern, String text, int groupIndex){
 if(text!=null){
	 Matcher matcher = pattern.matcher(text);
	 String match = null;
	 while(matcher.find()){
		 match = matcher.group(groupIndex);
		 break;
	 }
	 return match;		  
 }else{
	 return null;
 }
}*/
}

XMLParser:

package com.androidhive.xmlparsing;
import java.io.IOException;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import android.util.Log;
public class XMLParser {
// constructor
public XMLParser() {
}
/**
 * Getting XML from URL making HTTP request
 * @param url string
 * */
public String getXmlFromUrl(String url) {
 String xml = null;
 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();
 }
 // return XML
 return xml;
}

/**
 * Getting XML DOM element
 * @param XML string
 * */
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(is);
  } catch (ParserConfigurationException e) {
   Log.e("Error: ", e.getMessage());
   return null;
  } catch (SAXException e) {
   Log.e("Error: ", e.getMessage());
		 return null;
  } catch (IOException e) {
   Log.e("Error: ", e.getMessage());
   return null;
  }
	 return doc;
}

/** Getting node value
  * @param elem element
  */
 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 elem.getTextContent();
  }
  return "";
 }

 /**
  * Getting node value
  * @param Element node
  * @param key string
  * */
 public String getValue(Element item, String str) { 
  NodeList n = item.getElementsByTagName(str); 
  return this.getElementValue(n.item(0));
 }



}

RegEx:

package com.androidhive.xmlparsing;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegEx {
public static String getMatch(String patternString, String text, int groupIndex){
 Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE | Pattern.DOTALL );
 return RegEx.getMatch(pattern, text, groupIndex);
}
public static String getMatch(Pattern pattern, String text, int groupIndex){
 if(text!=null){
	 Matcher matcher = pattern.matcher(text);
	 String match = null;
	 while(matcher.find()){
		 match = matcher.group(groupIndex);
		 break;
	 }
	 return match;		  
 }else{
	 return null;
 }
}
}

Layout list_item(layout dos titulos)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal"> 
   <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
 <!-- Name Label -->
    <TextView
	    android:id="@+id/title"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:textColor="#dc6800"
	    android:textSize="16sp"
	    android:textStyle="bold"
	    android:paddingTop="6dip"
	    android:paddingBottom="2dip" />
 <!-- link -->
    <TextView
	    android:visibility="gone"
	    android:id="@+id/link"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:textColor="#acacac"
	    android:paddingBottom="2dip">
    </TextView>
 <!-- Description label -->
    <TextView
	    android:visibility="gone"
	    android:id="@+id/desciption"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:textColor="#acacac"
	    android:paddingBottom="2dip">
    </TextView>
    <!-- publicado -->
    <TextView
	    android:visibility="gone"
	    android:id="@+id/pub"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:textColor="#acacac"
	    android:textStyle="bold"
	    android:gravity="left">
    </TextView>

   </LinearLayout>
</LinearLayout>

Layout single_list_item(layout dos detalhes)

<ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/scroll"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <LinearLayout
	    android:id="@+id/container"
	    android:orientation="vertical"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content">
 <!-- titulo -->
 <TextView android:id="@+id/title_label"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:textSize="25sp"
	    android:textStyle="bold"
	    android:paddingTop="10dip"
	    android:paddingBottom="10dip"
	    android:textColor="#dc6800"/>
 <!-- Publicação -->
 <TextView android:id="@+id/pub_label"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textStyle="bold"/>

 <!-- link -->
 <TextView android:id="@+id/link_label"
   android:clickable="true"
	 android:autoLink="web"
	 android:linksClickable="true"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textStyle="bold"/>

  <!-- image -->
 <ImageView android:id="@+id/image_label"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:textColor="#acacac"
	    android:text="@string/ola"/>


 <!-- Description -->
 <TextView android:id="@+id/description_label"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:textColor="#acacac"/>
 </LinearLayout>
</ScrollView>

so que nao tou a conseguir buscar o caminho da imagem, tento imprimir o caminho e ele nao imprime.

se imprimi-se ja era muito bom caminho andado.


Ta demais o bar da praia maninho, sempre a PROGRAMAR em hard techo hehehehe

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.