dom4j 解析 xml
dom 解析 xml,当xml流没有明确定义编码格式时候,回报如下错误
Invalid byte 2 of 2-byte UTF-8 sequence
使用dom4j 中的documenthelper.parseText()来解析流可避免该问题放生。
View Code
1 public class Dom4jParse {
2 public List iterateWholeXML(String str) {
3
4 List list = new ArrayList();
5 SAXReader saxReader = new SAXReader();
6 try {
7 // InputStream is = new ByteArrayInputStream(str.getBytes());
8 // Document document = saxReader.read(is);
9 Document document = DocumentHelper.parseText(str);
10 Element root = document.getRootElement();
11
12 // 遍历根结点(variable)的所有孩子节点(肯定是item节点)
13 for (Iterator iter = root.elementIterator(); iter.hasNext();) {
14 Element element = (Element) iter.next();
15 // 获取item节点的type属性的值
16 Attribute typeAttr = element.attribute("type");
17 if (typeAttr != null) {
18 String type = typeAttr.getValue();
19 }
20
21 Tasklist task = new Tasklist();
22
23 // 遍历item结点的所有孩子节点(即activity,assignedToRole,taskID,receivedDate等),并进行处理
24 for (Iterator iterInner = element.elementIterator(); iterInner
25 .hasNext();) {
26 Element elementInner = (Element) iterInner.next();
27 if (elementInner.getName().equals("activity")) {
28
29 task.setActivity(elementInner.getText());
30 // // 获取college节点的leader属性的值
31 // Attribute leaderAttr = elementInner.attribute("leader");
32 // if (leaderAttr != null) {
33 // String leader = leaderAttr.getValue();
34 // if (leader != null && !leader.equals("")) {
35 // hm.put(elementInner.getName() + "-"
36 // + leaderAttr.getName() + num, leader);
37 // } else {
38 // hm.put(elementInner.getName() + "-"
39 // + leaderAttr.getName() + num, "leader");
40 // }
41 // } else {
42 // hm.put(elementInner.getName() + "-leader" + num,
43 // "leader");
44 // }
45 }
46 if (elementInner.getName().equals("assignedToRole")) {
47 task.setAssignedToRole(elementInner.getText());
48 }
49 if (elementInner.getName().equals("assignedToUser")) {
50 task.setAssignedToUser(elementInner.getText());
51 }
52 if (elementInner.getName().equals("closedBy")) {
53 task.setClosedBy(elementInner.getText());
54 }
55 if (elementInner.getName().equals("dueDate")) {
56 task.setDueDate(elementInner.getText());
57 }
58 if (elementInner.getName().equals("taskID")) {
59 task.setTaskID(elementInner.getText());
60 }
61 if (elementInner.getName().equals("receivedDate")) {
62 task.setReceivedDate(elementInner.getText());
63 }
64 if (elementInner.getName().equals("taskStatus")) {
65 task.setTaskStatus(elementInner.getText());
66 }
67 if (elementInner.getName().equals("subject")) {
68 task.setSubject(elementInner.getText());
69 }
70 if (elementInner.getName().equals("processName")) {
71 task.setProcessName(elementInner.getText());
72 }
73 if (elementInner.getName().equals("processInstanceID")) {
74 task.setProcessInstanceID(elementInner.getText());
75 }
76 if (elementInner.getName().equals("processInstanceStatus")) {
77 task.setProcessInstanceStatus(elementInner.getText());
78 }
79 }
80 list.add(task);
81 }
82
83 } catch (DocumentException e) {
84 // TODO Auto-generated catch block
85 e.printStackTrace();
86 }
87
88 return list;
89 }
90 }


浙公网安备 33010602011771号