java dom
java代码:
public Document getDoc()throws Exception{
DocumentBuilderFactory fc=DocumentBuilderFactory.newInstance();
 DocumentBuilder builder=fc.newDocumentBuilder();
 Document doc=builder.parse(new File("D:/workspace/shop/WebRoot/category.xml"));
 
 return doc;
}
public List<String> findcontent(String name)throws Exception{
 Document doc=this.getDoc();
 NodeList nodes=doc.getElementsByTagName(name);
int len=nodes.getLength();
List<String> list=new ArrayList<String>();
for(int i=0;i<len;i++){
Node node=nodes.item(i);
String content=node.getTextContent();
list.add(content);
}
      return list;
}xml文件:
<店铺分类>
<服装>
<品牌>利郎</品牌>
<品牌>七匹狼</品牌>
<品牌>李宁</品牌>
</服装>
<鞋>
<品牌>阿迪达斯</品牌>
<品牌>李宁</品牌>
<品牌>匹克</品牌>
<品牌>耐克</品牌>
</鞋>
<手机>
<品牌>诺基亚</品牌>
<品牌>索爱</品牌>
<品牌>摩托罗拉</品牌>
<品牌>索尼</品牌>
</手机>
<电脑>
<品牌>戴尔</品牌>
<品牌>联想</品牌>
<品牌>神州</品牌>
<品牌>IBM</品牌>
</电脑>
</店铺分类>
想取出其中一个分类,比如“电脑”,虽然可以取出来,但是list长度却是1,也就是说他是“戴尔”“联想”“神州”“IBM”放在一起了,应该怎么弄开。

解决方案 »

  1.   

    首先判断有没有子节点,有之后在在循环判断是不是ElementNode,如果是再取值
      

  2.   

    public List<String> findcontent(String name)throws Exception{
     Document doc=this.getDoc();
     NodeList nodes=doc.getElementsByTagName(name);
    int len=nodes.getLength();
    List<String> list=new ArrayList<String>();
    for(int i=0;i<len;i++){

    Node node=nodes.item(i);
    NodeList childs=node.getChildNodes();

    for(int j=0;j<childs.getLength();j++){
     Node child=childs.item(j);
     if(child.getNodeType()==Node.ELEMENT_NODE){
    String content=child.getTextContent();
    list.add(content);