我想请问一下,如何根据条件来读取相应的节点信息
下面是我的一个xml文件和网上的一个读取xml的代码,现在我希望根据<catalog>值为水晶或者纯银
来分别读取它下面<sub>子节点中的内容,源代码只能循环读出所有子节点的内容,如何修改一下满足要求--------------------------------------------------xml文件
<?xml version="1.0" encoding="gb2312" ?>
<root>
<catalog>水晶
    <name>水晶饰品</name>
    <folder>shuijing</folder>
    <sub>
      <subname>水晶手链</subname>
      <url>sj_sl.htm</url>
    </sub>
    <sub>
      <subname>水晶戒指</subname>
      <url>sj_jz.htm</url>
    </sub>   
     <sub>
      <subname>水晶项链</subname>
      <url>sj_xl.htm</url>
    </sub>
    <sub>
      <subname>水晶吊坠</subname>
      <url>sj_dz.htm</url>
    </sub>
  </catalog>
  <catalog>纯银
    <name>纯银饰品</name>
    <folder>chunyin</folder>
    <sub>
      <subname>纯银手镯</subname>
      <url>cy_sz.htm</url>
    </sub>
    <sub>
      <subname>纯银项链</subname>
      <url>cy_xl.htm</url>
    </sub>
    <sub>
      <subname>纯银戒指</subname>
      <url>cy_jz.htm</url>
    </sub>
    <sub>
      <subname>纯银手链</subname>
      <url>cy_sl.htm</url>
    </sub>
  </catalog>
</root> ------------------------------------------------------xml读取package mypackage;import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*; public class xmldisplay{ 
   public static void main (String args[]){
   long lasting=System.currentTimeMillis(); 
   try{
    File f=new File("test.xml");
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    DocumentBuilder builder=factory.newDocumentBuilder();
    Document doc=builder.parse(f);
    NodeList nl=doc.getElementsByTagName("sub");
    for(int i=0;i<nl.getLength();i++)
    {
      System.out.print("名称:"+doc.getElementsByTagName("subname").item(i).getFirstChild().getNodeValue());
      System.out.print("链接:"+doc.getElementsByTagName("url").item(i).getFirstChild().getNodeValue());
    }
   
   }catch(Exception e){
      e.printStackTrace();
   }
}
}