Muszę opracować aplikację na Androida.Uzyskaj listę wartości używając parsera dom w Androidzie
Poniżej przedstawiam następujący format xml.
<Product>
<product name="viki" productid="111">
<ProductType>
<producttype>Nokia</producttype>
<producttype>Samsung</producttype>
</ProductType>
</product>
</Product>
Tutaj muszę uzyskać Producttype dla particluar product.so mam napisał następujący kod:
if(subCategoryChildNode.hasChildNodes()){
// parse 'Subcategory' childs
NodeList productNL = subCategoryChildElmt.getElementsByTagName("product");
if(productNL.getLength() > 0){
ArrayList<Product> productAL = new ArrayList<Product>();
Product productBean = null;
for(int pCnt=0;pCnt<productNL.getLength();pCnt++){
Node productNode = productNL.item(pCnt);
Element productElmt = null;
// parse 'product' tag attributes
if(productNode.hasAttributes()){
productBean = new Product();
productElmt = (Element)productNode;
productBean.setmProductName(productElmt.getAttribute("name"));
}
if(productNode.hasChildNodes()){
NodeList productTypeNL = productElmt.getElementsByTagName("ProductType");
if(productTypeNL.getLength() > 0){
ArrayList<ProductType> ProductTypeAL = new ArrayList<ProductType>();
ProductType productTypeBean = null;
for(int ptCnt=0;ptCnt<productTypeNL.getLength();ptCnt++){
Node productTypeNode = productTypeNL.item(ptCnt);
Element productTypeElmt = null;
if(productTypeNode.hasChildNodes()){
productTypeBean = new ProductType();
productTypeElmt = (Element)productTypeNode;
productTypeBean.setmProductType(XMLfunctions.getValue(productTypeElmt,"producttype"));
System.out.println("Product Types are "+ " "+XMLfunctions.getValue(productTypeElmt,"producttype"));
ProductTypeAL.add(productTypeBean);
}
productBean.setmProductTypes(ProductTypeAL);
}
productAL.add(productBean);
}
}
subCategoryBean.setmProducts(productAL);
}
}
subCategoryAL.add(subCategoryBean);
}
Tutaj otrzymuję wartość jest nokia alone.but muszę pokazywać wartość nokia , samsung ... jeśli muszę uruchomić aplikację oznacza uzyskanie pojedynczej wartości.Ale muszę uzyskać listę wszystkich wartości ..
Co jest nie tak w moim kodzie. Proszę sprawdzić i dać mi rozwiązanie fot? ?
W dzienniku widzisz, że "Typy produktów to Nokia", a "Typy produktów to Samsung"? – MagicMicky
Dlaczego nie używać parsera SAX, jest on wydajniejszy pod względem pamięci niż przechowywanie wszystkiego w pamięci w parserze DOM - a aplikacje na Androida mają ograniczoną pamięć. – NoBugs
@NoBugs tak Próbowałem tego. Ale mam więcej problemów z robieniem parsera sax.That, dlaczego mam chossing parser DOM. – user2218667