【发布时间】:2013-06-13 01:19:39
【问题描述】:
我必须开发一个安卓应用程序。
这里我遵循以下 xml 格式。
<Product>
<product name="viki" productid="111">
<ProductType>
<producttype>Nokia</producttype>
<producttype>Samsung</producttype>
</ProductType>
</product>
</Product>
这里我必须获取特定产品的产品类型。所以我编写了以下代码:
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 单独的。但我需要显示值 nokia、samsung...如果我必须运行应用程序意味着获取单个值。但我需要获取所有值的列表..
我的代码有什么问题..请检查并给我解决这些问题???
【问题讨论】:
-
在您的日志中,您是否同时看到了
Product Types are Nokia和Product Types are Samsung? -
为什么不使用 SAX 解析器,它比将所有内容都保存在 DOM 解析器中的内存效率更高 - 而且 Android 应用程序的内存有限。
-
@NoBugs 是的,我已经尝试过了。但是我在做 sax 解析器时遇到了更多问题。这就是我选择 dom 解析器的原因。
标签: java android xml-parsing domparser