<?xml version="1.0" encoding="gb2312"?>

<root>
 <LINE>
  <种类>动物</种类>
 </LINE>
 <LINE>
  <编号>001</编号>
  <名称>牛</名称>
 </LINE>
 <LINE>
  <种类>植物</种类>
 </LINE>
 <LINE>
  <编号>001</编号>
  <名称>松树</名称>
 </LINE>
 <LINE>
  <编号>002</编号>
  <名称>玫瑰</名称>
 </LINE>
</root>
 

然后用下面程序,查询编号为001的LINE元素,并显示它们的名称。

test.java

package mypack;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.jdom.*;
import org.jdom.input.*;
import org.jdom.xpath.XPath;

public class test {
 public static void main(String[] args) {
  File f=new File("test.xml");
  SAXBuilder saxb=new SAXBuilder();
  try {
   Document xmldoc=saxb.build(f);
   XPath xpath=XPath.newInstance("//LINE[编号='001']");//创建一个查询编号为001的LINE元素的XPATH。
   List nodes=xpath.selectNodes(xmldoc);//进行查询
   System.out.println("返回记录数:"+nodes.size());
   for(int i=0;i<nodes.size();i++) {
    System.out.print(i+" / ");
    System.out.println(((Element)nodes.get(i)).getChildText("名称"));//返回该LINE的名称的文本值。
   }
  } catch (JDOMException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }


//打印xml文档
 private void parseElement(Element root)
 {
  //System.out.print(root.getNamespaceURI());
  
  System.out.print("<");
  System.out.print(root.getNodeName());
  //System.out.print(root.getPrefix());
  //System.out.print(":");
  //System.out.print(root.getLocalName());
  
  NamedNodeMap nnm = root.getAttributes();
  for(int i = 0; i < nnm.getLength(); i++)
  {
   Attr attr = (Attr)nnm.item(i);
   System.out.print(" ");
   System.out.print(attr.getName());
   System.out.print("=\"");
   System.out.print(attr.getValue());
   System.out.print("\"");
  }
  
  System.out.print(">");
  
  NodeList list = root.getChildNodes();
  for(int i = 0; i < list.getLength(); i++)
  {
   Node node = list.item(i);
   if(node instanceof Element)
   {
    Element e = (Element)node;
    parseElement(e);
   }
   else if(node instanceof Text)
   {
    Text t = (Text)node;
    System.out.print(t.getNodeValue());
   }
  }
  
  System.out.print("</");
  System.out.print(root.getNodeName());
  System.out.print(">");
 }
 
 private void parseRootName()
 {
  Element root = doc.getDocumentElement();
  System.out.println(root.getNodeName());
 }
 //工厂
 private void getDocument()
 {
  try
  {
   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
   
   factory.setNamespaceAware(true);
   
   DocumentBuilder db = factory.newDocumentBuilder();
   doc = db.parse(new File(fileName));
  }
  catch(Exception ex)
  {
   ex.printStackTrace();
   System.exit(1);
  }
 }

 }

}

posted on 2011-10-03 15:51  kangwang1988  阅读(3532)  评论(0编辑  收藏  举报