我想请问一下,如何根据条件来读取相应的节点信息!我希望程序能根据指定的 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> 

解决方案 »

  1.   

    import java.io.File;
    import java.util.Iterator;import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.io.SAXReader;public class Parse {
    public static void main(String[] args) throws Exception { SAXReader reader = new SAXReader();
    Document document = reader.read(new File("c:/NewFile.xml")); Iterator it = document.selectNodes("//catalog").iterator(); while (it.hasNext()) { Node node = (Node) it.next();

    Element ele = (Element) node;
    Iterator subit = ele.elementIterator("sub");
    if ("shuijing".equals(node.getText().trim())) {
    while (subit.hasNext()) {
    System.out.println(((Node) subit.next()).selectSingleNode(
    "subname").getText());
    }
    }
    }
    }
    }
      

  2.   

    自己改一下xml文件的位置