Dom4j中XPath相对路径的使用
 
XPath是用来表达XML文档树各种元素的位置的描述。通过XPath直接获取文档元素比较准确,直接,效率也高。
XPath的路径分相对的和绝对的,绝对路径以“/"开始,相对路径以“./”或直接以元素的名开头。
 
xml
<?xml version = "1.0" encoding = "UTF-8"?>
<persons>
        <country>china</country>
        <city>zhengzhou</city>
        <person>
                <id>101</id>
                <name>zhangsan</name>
                <contacts>
                        <email>zhangsan@yahoo.cn</email>
                        <tel>0371-85555555</tel>
                        <qq>6683965</qq>
                </contacts>
                <addresses>
                        <address>
                                <zipcode>450000</zipcode>
                                <street>aaa</street>
                        </address>
                        <address>
                                <zipcode>450001</zipcode>
                                <street>bbb</street>
                        </address>
                </addresses>
        </person>
        <person>
                <id>102</id>
                <name>lisi</name>
                <contacts>
                        <email>lisi@yahoo.cn</email>
                        <tel>0371-68554545</tel>
                        <qq>224488</qq>
                </contacts>
                <addresses>
                        <address>
                                <zipcode>450002</zipcode>
                                <street>xxx</street>
                        </address>
                        <address>
                                <zipcode>450003</zipcode>
                                <street>yyy</street>
                        </address>
                </addresses>
        </person>
</persons>
 
import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;

/**
* XML相对路径测试
*
* @author leizhimin 2010-1-6 11:10:54
*/

public class TestDom {

        public static void main(String[] args) {
                File xmlf = new File("D:\\person.xml");
                Document doc = XmlToolkit.makeDocument(xmlf, "UTF-8");

                Element e_plan = (Element) doc.selectSingleNode("/persons");
                Element e_id = (Element) e_plan.selectSingleNode("./country");
                Element e_id1 = (Element) e_plan.selectSingleNode("country");
                List<Element> eplist = e_plan.selectNodes("/persons/person");
                for (Element ep : eplist) {
                        String path = ep.getPath();
                        Element id = (Element) ep.selectSingleNode("id");
                        System.out.println(id.getText());
                }
                System.out.println("---------------");

        }
}
 
101
102
---------------

Process finished with exit code 0