Мне нужно разработать приложение для Android.Получить список значений с помощью парсера dom в android
Здесь я следую за XML-форматом.
<Product>
<product name="viki" productid="111">
<ProductType>
<producttype>Nokia</producttype>
<producttype>Samsung</producttype>
</ProductType>
</product>
</Product>
Здесь я должен получить ProductType для particluar product.so я написал следующий код:
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);
}
Здесь я получаю значение является Nokia alone.but мне нужно, чтобы отобразить значение нокиа , samsung ... если мне нужно запустить приложение, получив одно значение. Но мне нужно получить список всех значений.
Что не так в моем коде .. пожалуйста, проверьте и дайте мне решение fot these ?? ?
В вашем журнале вы видите, что оба типа продукта - это «Nokia» и «Типы продуктов - это Samsung»? – MagicMicky
Почему бы не использовать синтаксический анализатор SAX, он более эффективен с точки зрения памяти, чем хранение всего в памяти анализатора DOM, а приложения для Android имеют ограниченную память. – NoBugs
@NoBugs да, я попытался это сделать. Но у меня больше проблем с выполнением sax parser.that, почему у меня есть chossing dom parser. – user2218667