Rumah > 类库下载 > java类库 > 在Java中使用xpath对xml解析

在Java中使用xpath对xml解析

高洛峰
Lepaskan: 2016-10-09 16:36:19
asal
1727 orang telah melayarinya

xpath是一门在xml文档中查找信息的语言。xpath用于在XML文档中通过元素和属性进行导航。它的返回值可能是节点,节点集合,文本,以及节点和文本的混合等。
在学习本文档之前应该对XML的节点,元素,属性,文本,处理指令,注释,根节点,命名空间以及节点关系有一定的了解以及对xpath也有了解。
XML学习地址:http://www.runoob.com/xml/xml-tutorial.html
xpath基本语法学习地址:http://www.runoob.com/xpath/xpath-tutorial.html
xpath官方文档:https://yunpan.cn/cvc4tEIGy5EvS 访问密码 9d16
本文主要介绍:Java中使用xpath操作对xml操作。
1)首先在dom4j中如何使用xpath技术
导入xPath支持的jar包。jaxen-1.1-beta-6.jar(首先要先导入dom4j包,dom4j下载地址:http://www.dom4j.org/dom4j-1.6.1/)。

1.png

导包之后如图所示:

1.png



如果不知道怎样导包请参考我以前的一篇博客:Java获取xml节点总结之读取xml文档节点
2)在Java中使用xpath方法,主要有两点:
List selectNodes("xpath表达式"); 查询多个节点对象
Node selectSingleNode("xpath表达式"); 查询一个节点对象
下面就用实例说明使用方法。

一、selectNodes使用方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

package com.vastsum.demo;

 

import java.io.File;

import java.io.FileOutputStream;

import java.util.List;

 

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.Node;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

 

/**

 *

 * @author shutu008

 *selectNode的使用方法

 */

public class xpathDemo {

 

    public static void main(String[] args) throws Exception {

 

    Document doc = new SAXReader().read(new File("./src/contact.xml"));

         

        /**

         * @param xpath 表示xpath语法变量

         */

    String xpath="";

         

        /**

         * 1.      /      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)

         */

        xpath = "/contactList";

        xpath = "/contactList/contact";

         

        /**

         * 2. //     相对路径       表示不分任何层次结构的选择元素。

         */

        xpath = "//contact/name";

        xpath = "//name";

         

        /**

         * 3. *      通配符         表示匹配所有元素

         */

        xpath = "/contactList/*"; //根标签contactList下的所有子标签

        xpath = "/contactList//*";//根标签contactList下的所有标签(不分层次结构)

         

        /**

         * 4. []      条件           表示选择什么条件下的元素

         */

        //带有id属性的contact标签

        xpath = "//contact[@id]";

        //第二个的contact标签

        xpath = "//contact[2]";

        //选择最后一个contact标签

        xpath = "//contact[last()]";

         

        /**

         * 5. @     属性            表示选择属性节点

         */

        xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象

        xpath = "//contact[not(@id)]";//选择不包含id属性的contact标签节点

        xpath = "//contact[@id='002']";//选择id属性值为002的contact标签

        xpath = "//contact[@id='001' and @name='eric']";//选择id属性值为001,且name属性为eric的contact标签

         

        /**

         *6.  text()   表示选择文本内容

         */

        //选择name标签下的文本内容,返回Text对象

        xpath = "//name/text()";

        xpath = "//contact/name[text()='张三']";//选择姓名为张三的name标签

         

         

        List<Node> list = doc.selectNodes(xpath);

        for (Node node : list) {

            System.out.println(node);

        }

     

        //写出xml文件

        //输出位置

        FileOutputStream out = new FileOutputStream("d:/contact.xml");

         

        //指定格式

        OutputFormat format = OutputFormat.createPrettyPrint();

        format.setEncoding("utf-8");

        XMLWriter writer = new XMLWriter(out,format);

         

        //写出内容

        writer.write(doc);

         

        //关闭资源

        writer.close();

         

    }

     

 

}

Salin selepas log masuk

二、selectSingleNode的使用方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

package com.vastsum.demo;

 

import java.io.File;

import java.util.Iterator;

 

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

 

/**

 *

 * @author shutu008

 *selectSingleNode的使用

 */

 public class xpathDemo1{

     public static void main(String[] args) throws Exception{

         //读取XML文件,获得document对象

        SAXReader saxReader = new SAXReader();   

        Document doc = saxReader.read(new File("./src/contact.xml"));

         

        //使用xpath获取某个节点

        String xpath = "";

         

        //对contact元素 id="001"的节点,操作

        xpath = "//contact[@id = &#39;001&#39;]";

        Element contactElem =    (Element)doc.selectSingleNode(xpath);

         

        //设置这个节点的属性值

        contactElem.addAttribute("name", "001");

         

        //输出这个节点的所有属性值

        for(Iterator it = contactElem.attributeIterator();it.hasNext();){

        Attribute conAttr = (Attribute)it.next();

        String conTxt = conAttr.getValue();

        String conAttrName = conAttr.getName();

        System.out.println(conAttrName+" = "+conTxt);

        }

         

     }

 }

Salin selepas log masuk


sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan