- 浏览: 850175 次
文章分类
- 全部博客 (365)
- java (124)
- spring mvc (21)
- spring (22)
- struts2 (6)
- jquery (27)
- javascript (24)
- mybatis/ibatis (8)
- hibernate (7)
- compass (11)
- lucene (26)
- flex (0)
- actionscript (0)
- webservice (8)
- rabbitMQ/Socket (15)
- jsp/freemaker (5)
- 数据库 (27)
- 应用服务器 (21)
- Hadoop (1)
- PowerDesigner (3)
- EJB (0)
- JPA (0)
- PHP (2)
- C# (0)
- .NET (0)
- html (2)
- xml (5)
- android (7)
- flume (1)
- zookeeper (0)
- 证书加密 (2)
- maven (1)
- redis (2)
- cas (11)
最新评论
-
zuxianghuang:
通过pom上传报错 Artifact upload faile ...
nexus上传了jar包.通过maven引用当前jar,不能取得jar的依赖 -
流年末年:
百度网盘的挂了吧???
SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) -
953434367:
UfgovDBUtil 是什么类
Java发HTTP POST请求(内容为xml格式) -
smilease:
帮大忙了,非常感谢
freemaker自动生成源代码 -
syd505:
十分感谢作者无私的分享,仔细阅读后很多地方得以解惑。
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
一、创建DOM
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
|
XMLBuilder.java 用于创建DOM,Root结点
/******************************************************************** * 项目名称 :rochoc <p>
* 包名称 :rochoc.xml.oper <p>
* 文件名称 :XmlBuilder <p>
* 编写者 :luoc <p>
* 编写日期 :2005-6-22 <p>
* 程序功能(类)描述 : 根据传入的XML文件生成Document和root结点<p>
*
* 程序变更日期 :
* 变更作者 :
* 变更说明 :
********************************************************************/ package rochoc.xml.oper;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
/** * 类名:XmlBuilder <p>
* 类描述:根据传入的XML文件生成Document和root结点 <p>
* 编写者 :luoc<p>
* 编写日期 :2005-6-22<p>
* 主要public成员变量:<p>
* 主要public方法: <p>
**/ public class XmlBuilder
{ /**
*构造函数说明: <p>
*参数说明:@param path <p>
**/ public XmlBuilder(String path)
{
this .path=path;
init();
}
/**
* 方法名称:init<p>
* 方法功能:初始化函数<p>
* 参数说明: <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ public void init()
{
buildDocument();
buildRoot();
}
/**
* 方法名称:buildDocument<p>
* 方法功能:将XML文件生成Document <p>
* 参数说明: <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ private void buildDocument()
{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder=factory.newDocumentBuilder();
logger.debug( "Construct document builder success." );
doc=builder.parse( new File(path));
logger.debug( "Build xml document success." );
} catch (ParserConfigurationException e)
{
logger.error( "Construct document builder error:" +e);
} catch (SAXException e)
{
logger.error( "Parse xml file error:" +e);
} catch (IOException e)
{
logger.error( "Read xml file error:" +e);
}
}
/**
* 方法名称:buildRoot<p>
* 方法功能:生成XML的根结点<p>
* 参数说明: <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ private void buildRoot()
{
root=doc.getDocumentElement();
}
/**
* @return 返回 doc。
*/ public Document getDoc()
{
return doc;
}
/**
* @param doc 要设置的 doc。
*/ public void setDoc(Document doc)
{
this .doc = doc;
}
/**
* @return 返回 path。
*/ public String getPath()
{
return path;
}
/**
* @param path 要设置的 path。
*/ public void setPath(String path)
{
this .path = path;
}
/**
* @return 返回 root。
*/ public Element getRoot()
{
return root;
}
/**
* @param root 要设置的 root。
*/ public void setRoot(Element root)
{
this .root = root;
}
/*全局变量*/ private String path= null ; //xml文件路径
private Document doc= null ; //xml文件对应的document
private Element root= null ; //xml文件的根结点
private Logger logger=Logger.getLogger(getClass().getName());
} |
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
|
XmlOper.java 用于操作XML文件,包括查找、新增、删除、修改结点
/********************************************************************
* 项目名称 :rochoc <p>
* 包名称 :rochoc.xml.oper <p>
* 文件名称 :XmlOper <p>
* 编写者 :luoc <p>
* 编写日期 :2005-6-22 <p>
* 程序功能(类)描述 : 对XML进行读写操作 <p>
*
* 程序变更日期 :
* 变更作者 :
* 变更说明 :
********************************************************************/ package rochoc.xml.oper;
import java.util.ArrayList;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/** * 类名:XmlOper <p>
* 类描述:对XML文件进行读写操作,均为静态函数 <p>
* 编写者 :luoc<p>
* 编写日期 :2005-6-22<p>
* 主要public成员变量:<p>
* 主要public方法: <p>
**/ public class XmlOper
{ /**
*构造函数说明: <p>
*参数说明: <p>
**/ private XmlOper()
{
}
/**
* 方法名称:getNodeList<p>
* 方法功能:获取父结点parent的所有子结点<p>
* 参数说明:@param parent
* 参数说明:@return <p>
* 返回:NodeList <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static NodeList getNodeList(Element parent)
{
return parent.getChildNodes();
}
/**
* 方法名称:getElementsByName<p>
* 方法功能:在父结点中查询指定名称的结点集 <p>
* 参数说明:@param parent
* 参数说明:@param name
* 参数说明:@return <p>
* 返回:Element[] <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static Element [] getElementsByName(Element parent,String name)
{
ArrayList resList= new ArrayList();
NodeList nl=getNodeList(parent);
for ( int i= 0 ;i<nl.getLength();i++)
{
Node nd=nl.item(i);
if (nd.getNodeName().equals(name))
{
resList.add(nd);
}
}
Element [] res= new Element [resList.size()];
for ( int i= 0 ;i<resList.size();i++)
{
res[ 0 ]=(Element)resList.get(i);
}
logger.debug(parent.getNodeName()+ "'s children of " +name+
"'s num:" +res.length);
return res;
}
/**
* 方法名称:getElementName<p>
* 方法功能:获取指定Element的名称 <p>
* 参数说明:@param element
* 参数说明:@return <p>
* 返回:String <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static String getElementName(Element element)
{
return element.getNodeName();
}
/**
* 方法名称:getElementValue<p>
* 方法功能:获取指定Element的值<p>
* 参数说明:@param element
* 参数说明:@return <p>
* 返回:String <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static String getElementValue(Element element)
{
NodeList nl=element.getChildNodes();
for ( int i= 0 ;i<nl.getLength();i++)
{
if (nl.item(i).getNodeType()==Node.TEXT_NODE) //是一个Text Node
{
logger.debug(element.getNodeName()+ " has a Text Node." );
return element.getFirstChild().getNodeValue();
}
}
logger.error(element.getNodeName()+ " hasn't a Text Node." );
return null ;
}
/**
* 方法名称:getElementAttr<p>
* 方法功能:获取指定Element的属性attr的值 <p>
* 参数说明:@param element
* 参数说明:@param attr
* 参数说明:@return <p>
* 返回:String <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static String getElementAttr(Element element,String attr)
{
return element.getAttribute(attr);
}
/**
* 方法名称:setElementValue<p>
* 方法功能:设置指定Element的值 <p>
* 参数说明:@param element
* 参数说明:@param val <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static void setElementValue(Element element,String val)
{
Node node=element.getOwnerDocument().createTextNode(val);
NodeList nl=element.getChildNodes();
for ( int i= 0 ;i<nl.getLength();i++)
{
Node nd=nl.item(i);
if (nd.getNodeType()==Node.TEXT_NODE) //是一个Text Node
{
nd.setNodeValue(val);
logger.debug( "modify " +element.getNodeName()+ "'s node value succe." );
return ;
}
}
logger.debug( "new " +element.getNodeName()+ "'s node value succe." );
element.appendChild(node);
}
/**
* 方法名称:setElementAttr<p>
* 方法功能:设置结点Element的属性<p>
* 参数说明:@param element
* 参数说明:@param attr
* 参数说明:@param attrVal <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static void setElementAttr(Element element,
String attr,String attrVal)
{
element.setAttribute(attr,attrVal);
}
/**
* 方法名称:addElement<p>
* 方法功能:在parent下增加结点child<p>
* 参数说明:@param parent
* 参数说明:@param child <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static void addElement(Element parent,Element child)
{
parent.appendChild(child);
}
/**
* 方法名称:addElement<p>
* 方法功能:在parent下增加字符串tagName生成的结点<p>
* 参数说明:@param parent
* 参数说明:@param tagName <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static void addElement(Element parent,String tagName)
{
Document doc=parent.getOwnerDocument();
Element child=doc.createElement(tagName);
parent.appendChild(child);
}
/**
* 方法名称:addElement<p>
* 方法功能:在parent下增加tagName的Text结点,且值为text<p>
* 参数说明:@param parent
* 参数说明:@param tagName
* 参数说明:@param text <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static void addElement(Element parent,String tagName,String text)
{
Document doc=parent.getOwnerDocument();
Element child=doc.createElement(tagName);
setElementValue(child,text);
parent.appendChild(child);
}
/**
* 方法名称:removeElement<p>
* 方法功能:将父结点parent下的名称为tagName的结点移除<p>
* 参数说明:@param parent
* 参数说明:@param tagName <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ public static void removeElement(Element parent,String tagName)
{
logger.debug( "remove " +parent.getNodeName()+ "'s children by tagName " +tagName+ " begin..." );
NodeList nl=parent.getChildNodes();
for ( int i= 0 ;i<nl.getLength();i++)
{
Node nd=nl.item(i);
if (nd.getNodeName().equals(tagName))
{
parent.removeChild(nd);
logger.debug( "remove child '" +nd+ "' success." );
}
}
logger.debug( "remove " +parent.getNodeName()+ "'s children by tagName " +tagName+ " end." );
}
/*全局变量*/ static Logger logger=Logger.getLogger( "XmlOper" );
} |
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
XmlCreater.java 用于创建XML文件
/******************************************************************** * 项目名称 :rochoc <p>
* 包名称 :rochoc.xml.oper <p>
* 文件名称 :XmlCreater <p>
* 编写者 :luoc <p>
* 编写日期 :2005-6-22 <p>
* 程序功能(类)描述 : 创建DOM并生成XML文件 <p>
*
* 程序变更日期 :
* 变更作者 :
* 变更说明 :
********************************************************************/ package rochoc.xml.oper;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/** * 类名:XmlCreater <p>
* 类描述: 创建DOM并生成XML文件<p>
* 编写者 :luoc<p>
* 编写日期 :2005-6-22<p>
* 主要public成员变量:<p>
* 主要public方法: <p>
**/ public class XmlCreater
{ /**
*构造函数说明: <p>
*参数说明:@param path xml文件路径 <p>
**/ public XmlCreater(String path)
{
this .path=path;
init();
}
/**
* 方法名称:init<p>
* 方法功能: 初始化函数 <p>
* 参数说明: <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ private void init()
{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder=factory.newDocumentBuilder();
doc=builder.newDocument(); //新建DOM
} catch (ParserConfigurationException e)
{
logger.error( "Parse DOM builder error:" +e);
}
}
/**
* 方法名称:createRootElement<p>
* 方法功能:创建根结点,并返回 <p>
* 参数说明:@param rootTagName <p>
* 返回:Element <p>
* 作者:luoc
* 日期:2005-6-22
**/ public Element createRootElement(String rootTagName)
{
if (doc.getDocumentElement()== null )
{
logger.debug( "create root element '" +rootTagName+ "' success." );
Element root=doc.createElement(rootTagName);
doc.appendChild(root);
return root;
}
logger.warn( "this dom's root element is exist,create fail." );
return doc.getDocumentElement();
}
/**
* 方法名称:createElement<p>
* 方法功能:在parent结点下增加子结点tagName<p>
* 参数说明:@param parent
* 参数说明:@param tagName <p>
* 返回:Element <p>
* 作者:luoc
* 日期:2005-6-22
**/ public Element createElement(Element parent,String tagName)
{
Document doc=parent.getOwnerDocument();
Element child=doc.createElement(tagName);
parent.appendChild(child);
return child;
}
/**
* 方法名称:createElement<p>
* 方法功能:在parent结点下增加值为value的子结点tabName<p>
* 参数说明:@param parent
* 参数说明:@param tagName
* 参数说明:@param value <p>
* 返回:Element <p>
* 作者:luoc
* 日期:2005-6-22
**/ public Element createElement(Element parent,String tagName,String value)
{
Document doc=parent.getOwnerDocument();
Element child=doc.createElement(tagName);
XmlOper.setElementValue(child,value);
parent.appendChild(child);
return child;
}
/**
* 方法名称:createAttribute<p>
* 方法功能:在parent结点下增加属性 <p>
* 参数说明:@param parent
* 参数说明:@param attrName 属性名
* 参数说明:@param attrValue 属性值<p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ public void createAttribute(Element parent,String attrName,String attrValue)
{
XmlOper.setElementAttr(parent,attrName,attrValue);
}
/**
* 方法名称:buildXmlFile<p>
* 方法功能:根据DOM生成XML文件<p>
* 参数说明: <p>
* 返回:void <p>
* 作者:luoc
* 日期:2005-6-22
**/ public void buildXmlFile()
{
TransformerFactory tfactory=TransformerFactory.newInstance();
try {
Transformer transformer=tfactory.newTransformer();
DOMSource source= new DOMSource(doc);
logger.debug( "New DOMSource success." );
StreamResult result= new StreamResult( new File(path));
logger.debug( "New StreamResult success." );
transformer.setOutputProperty( "encoding" , "GBK" );
transformer.transform(source,result);
logger.debug( "Build XML File '" +path+ "' success." );
} catch (TransformerConfigurationException e)
{
logger.error( "Create Transformer error:" +e);
} catch (TransformerException e)
{
logger.error( "Transformer XML file error:" +e);
}
}
/**
* @return 返回 doc。
*/ public Document getDoc()
{
return doc;
}
/**
* @param doc 要设置的 doc。
*/ public void setDoc(Document doc)
{
this .doc = doc;
}
/**
* @return 返回 path。
*/ public String getPath()
{
return path;
}
/**
* @param path 要设置的 path。
*/ public void setPath(String path)
{
this .path = path;
}
/*全局变量*/ private Logger logger = Logger.getLogger(getClass().getName());
private Document doc= null ; //新创建的DOM
private String path= null ; //生成的XML文件绝对路径
} |
相关推荐
w3c-dom.jar 包 dom解析xml使用 包 免积分下载
Java中内置的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`接口是实现DOM解析的基础。 读取XML文件: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers...
为了处理XML文档,Java提供了多种API,其中最常用的包括DOM、SAX、DOM4J和JDOM。以下是对这些方法的详细介绍: 1. DOM(Document Object Model) DOM是一种树形结构的API,它将整个XML文档加载到内存中,形成一个...
例如,使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类可以创建和操作DOM树。以下是一个简单的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom....
DOM(Document Object Model)是W3C制定的一种标准,它为XML文档提供了一个树形结构,使得程序员可以方便地访问和操作XML文档的每一个元素。本教程将深入探讨Java中使用DOM模型解析XML文件的方法。 首先,我们需要...
1. **导入必要的库**:在Java中,DOM解析功能主要由`javax.xml.parsers`和`org.w3c.dom`包提供。因此,首先需要在代码中导入这些库: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax....
首先,需要导入必要的包,包括 java.io、javax.xml.parsers、javax.xml.transform 和 org.w3c.dom 等。这些包提供了 XML 文档的解析和生成功能。 接下来,创建一个名为 XMLHandler 的类,该类中包含一个名为 create...
DOM是一种W3C标准,它提供了一种将XML文档结构化为一个可编程的、与语言和平台无关的对象模型。通过DOM,开发人员可以轻松地访问和修改XML文档的任何部分。 DOM的核心概念是节点,XML文档中的每个元素、属性、文本...
在 Java 中操作 XML 文档有多种方式,常见的有 DOM、DOM4J、JDOM 和 SAX。每种方式都有其优缺,选择哪种方式取决于具体的项目需求。 DOM DOM(Document Object Model)是 W3C 推荐的一种 XML 文档对象模型。它将 ...
Java的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类用于创建和操作DOM树。 2. SAX:SAX解析器是事件驱动的,只在需要时处理XML文档的部分内容,适合处理大型XML文件。`org.xml.sax....
使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类可以创建XML文档。以下是一个简单的示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers....
Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...
JavaTM 2 Platform Standard Ed. 5.0 所有类 软件包 java.applet java.awt ...org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax org.xml.sax.ext org.xml.sax.helpers
import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; public class DomExample { public static void main(String[] args) { try { DocumentBuilderFactory dbFactory ...
在Java中,DOM解析器的核心类是`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`。首先,我们需要创建一个`DocumentBuilderFactory`实例,然后通过这个工厂实例来获取`DocumentBuilder`,接着...
使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类可以创建和操作DOM树。 SAX解析器则是一种事件驱动的解析方式,它不需要一次性加载整个XML文档到内存,而是逐行读取,当遇到元素、属性...
Java中的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类用于实现DOM解析。 ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import...
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
Java中常用的DOM解析库包括`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`。`dom4j`是一个流行的第三方DOM解析库,提供更方便的API。 2. **SAX解析器**:Simple API for XML (SAX) 是事件...
javase 中文API 最新版 ******************************* JavaTM 2 Platform Standard Ed....org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax org.xml.sax.ext org.xml.sax.helpers