函数evaluate不识别公式中的中括号怎么办(没有evaluate函数)
751
2022-05-29
Dom4j:
Dom SUN
dom在加载时,将所有元素全部加载内存
DOM4j - 第三方。
Dom4j是一个开源、灵活的XML API。
目前很多开源框架如struts,hibernate都使用dom4j做为解析其xml的工具。
支持文档的读写功能和Xpath快速查询操作。
这个需要我们自己把它的包导入myeclipse中的。
准备DOM4j:
包:dom4j.x.jar
包结构:
org.dom4j
类
org.dom4j.io.SAXReader – xml文档解析器
org.dom4j.Document、Element – 文档对像
需要知道的 Element的一些方法
Element.element(“name”) –此元素下的第一个name元素。
Element.elementIterator(“name”) – 此元素下的所有name元素。返回Iterator
Element.getText() – 返回元素包含的文本。
Element.getAttribute(“name”) – 返回名称为name的属性。
Element.addElement(“name”); - 添加一个name元素,同时返回name元素本身。
org.dom4j.io.XMLWriter – 将Document写出的对像。
DOM4J的层次图:
使用UTF-8编码,解决中文乱码:
//声明编码格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); //保存(XMLWriter默认情况下即是使用UTF-8编码。所以,如果使用OutputStream保存,且正好是UTF-8编码,则不必担心乱码问题) XMLWriter xml = new XMLWriter(new FileOutputStream("./src/xml/a.xml"),format); xml.write(doc);
Dom4j-保存节点-处理中文乱码:
在JavaIO中,writer总是本地编码格式处理数据。即GB2312 所有,使用writer写出数据有可能会发生一些问题,如保存不完整,或是乱码: XMLWriter writer = new XMLWriter(new FileWriter(“a.xml”)); //写出数据 writer.write(doc); 所以,建议在写出数据时,使用OutputStream保存数据。
记住:删除一个节点时,要用它的父节点删除它。
添加或修改属性的方法:addAttribute
Dom4j-从没有到有生成一个新的xml:
//通过DocumentHelper在内存中创建一个Document Document doc = DocumentHelper.createDocument(); doc.setXMLEncoding(“UTF-8”);//XML的编码格式 //生成一个节点,生成的第一个节点也是根节点,此方法只使用一次 Element root = doc.addElement(“users”);
1
2
3
4
5
Xpath
XML PATH Language。 可以实现快速查询。 XPATH包含 XPath 使用路径表达式在 XML 文档中进行导航 。 XPath 包含一个标准函数库 准备Xpath的包: jaxen.jar Xpath通过以下方法使用 dom.selectNodes – 返回一个 List对像 dom.selectSingleNode – 返回一个Node对像 //以下选择所有的user节点,处理不带命名空间的安以下原则 List
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
这个稍微了解一下:
Xpath处理带有命名空间的XML文档:
SAXReader sax = new SAXReader(); //声明一个map用于保存命名空间 Map
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SAX,StAX读取速度快。都是JAXP的成员。
StAX-Iterator编程接口和Cursor编程接口。
Dom4j。Dom。都会将所有节点加载加载到内存中。CRUD非常方便。
Dom4j支持XPath.
演示代码:::
package cn.hncu.dom4j; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.List; import java.util.Scanner; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.junit.Test; public class Dom4jDemo { @Test public void readDemo() throws Exception{ //声明SAXReader核心读取(xml)类,并获得dom对象 SAXReader sax = new SAXReader(); Document dom = sax.read("xml5/users.xml"); //获取根节点 Element root = dom.getRootElement(); //获取里面的第一个子元素 Element user = root.element("user"); String id = user.attributeValue("id"); System.out.println(id); String name = user.element("name").getText();//获取子元素中的文本内容--法1 String age = user.elementText("age");//获取子元素中的文本内容--法2 System.out.println(name+","+age); } //显示(遍历)所有用户 @Test public void readAll() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read("xml5/users.xml"); Element root = document.getRootElement(); Iterator
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
Java XML
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。