<?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);
}
}
}
}