>
Bom dia...
Sou novo em programação e estou com poblema nesse codigo que faz a leitura do xml, nao consigo ler o xml todo.
Exemplo no xml contem Emitente e Destinatario so consigo ler um e nao os dois, a parte que fa a leitura esta é
"NodeList nl = doc.getElementsByTagName(KEY_INFNFE);" queria que esse looping ler-se o xml todo, alguem poderia me ajudar?
static final String URL = "http://192.168.1.103/xml1.xml";
// XML node keys
//contantes que representam as tags do arquivo XML
static final String KEY_INFNFE = "infNFe"; // parent node
static final String KEY_NATOP = "natOp"; // Operação da Nf-e
static final String KEY_INDPAG = "indPag"; // Quantidade de Pagina
static final String KEY_MOD = "mod"; // Modelo da Nf-e
static final String KEY_SERIE = "serie"; // Serie da Nf-e
static final String KEY_NNF = "nNF"; // Numero da Nf-e
static final String KEY_DEMI = "dEmi"; // Data da Emissao
static final String KEY_DSAIENT = "dSaiEnt"; // Data Saida
static final String KEY_TPNF = "tpNF"; // Tipo da Nf-e
// Dados do Emitente
// static final String KEY_DEST = "dest"; // patent node
static final String KEY_CNPJ = "CNPJ"; // CNPJ do emitente
static final String KEY_XNOME = "xNome"; // Nome
static final String KEY_XLGR = "xLgr"; // Rua
static final String KEY_XBAIRRO = "xBairro"; // Bairro
static final String KEY_NRO = "nro"; // Numero
static final String KEY_CEP = "CEP"; // Cep
static final String KEY_XMUN = "xMun"; // Municipio
static final String KEY_FONE = "fone"; // Telefone
static final String KEY_IE = "ie"; // Inscrição Estadual
// Dados Destinatario
// static final String KEY_DEST = "dest"; // patent node
// static final String KEY_XNome = "xNome"; // patent node
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList> menuItems = new ArrayList>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
// Parte que faz a leitura do xml
NodeList nl = doc.getElementsByTagName(KEY_INFNFE);
// looping through all item nodes
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap map = new HashMap();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_NATOP, parser.getValue(e, KEY_NATOP));
map.put(KEY_DSAIENT, parser.getValue(e, KEY_DSAIENT));
map.put(KEY_INDPAG, "Rs." + parser.getValue(e, KEY_INDPAG));
map.put(KEY_MOD, parser.getValue(e, KEY_MOD));
map.put(KEY_SERIE, parser.getValue(e, KEY_SERIE));
map.put(KEY_NNF, parser.getValue(e, KEY_NNF));
map.put(KEY_DEMI, parser.getValue(e, KEY_DEMI));
map.put(KEY_TPNF, parser.getValue(e, KEY_TPNF));
map.put(KEY_CNPJ, parser.getValue(e, KEY_CNPJ));
map.put(KEY_XNOME, parser.getValue(e, KEY_XNOME));
map.put(KEY_XLGR, parser.getValue(e, KEY_XLGR));
map.put(KEY_XBAIRRO, parser.getValue(e, KEY_XBAIRRO));
map.put(KEY_NRO, parser.getValue(e, KEY_NRO));
map.put(KEY_CEP, parser.getValue(e, KEY_CEP));
map.put(KEY_XMUN, parser.getValue(e, KEY_XMUN));
map.put(KEY_FONE, parser.getValue(e, KEY_FONE));
map.put(KEY_IE, parser.getValue(e, KEY_IE));
// adding HashList to ArrayList
menuItems.add(map);
}
// Adding menuItems to ListView
ListAdapter adapter = new SimpleAdapter(this, menuItems,
R.layout.list_item,
new String[] { KEY_XNOME, KEY_XLGR, KEY_DEMI, KEY_CEP, KEY_XBAIRRO, KEY_CNPJ, KEY_XMUN,
KEY_DSAIENT}, new int[] {
R.id.nome, R.id.endereco, R.id.data, R.id.cep, R.id.bairro, R.id.cnpj, R.id.muni, R.id.saida });
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 nome = ((TextView) view.findViewById(R.id.nome)).getText().toString();
String end = ((TextView) view.findViewById(R.id.endereco)).getText().toString();
String descricao = ((TextView) view.findViewById(R.id.data)).getText().toString();
// String cep = ((TextView) view.findViewById(R.id.cep)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_XNOME, nome);
in.putExtra(KEY_XBAIRRO, end);
in.putExtra(KEY_DEMI, descricao);
startActivity(in);
}
});
}
}
ola Leonardo...
veja este site aqui
http://ibm.com/developerworks/br/opensource/library/x-android/
Obrigado Andre pela dica, mas meu codigo ja ta pronto, so tou com erro no looping na linha 44, quando ele ler o XML so pegar a primeira parte da descrição, Exemplo do jeito que ta era pra ler o XML do comerço ao fim, mas quando ele pega a primeira descrição ele nao ler mais, ele so ler a segunda parte se eu setar ele no looping, o unico erro é esse mas como eu sou novo em programação pra mim ta eu pouco dificio ajeitar esse looping,
você pode me ajudar?
Leonardo
tente isso aqui
try {
URL url = new URL("seu site\arquivo.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList nodeList1 = doc.getElementsByTagName("parent node here");
for (int i = 0; i < nodeList1.getLength(); i ) {
Node node = nodeList1.item(i);
}
} catch(Exception e) {
}