javaWeb 学习之旅(二)--------XML的使用方法
二、xml的使用方法
1.最简单的声明语法:
<?xml version="1.0"?>
常用的方法有:<?xml version="1.0" encoding="UTF-8"?>或者<?xml version="1.0" encoding="GB2312"?>
还有一个属性:说明文档是否独立 standalone="yes"
CDATA区: xml解析程序不会处理,按原样输出,语法如下: <![CDATA[内容]]>
2.DTD约束
book.xml
[html]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名> 数据结构</书名>
<作者> 某某某</作者>
</书>
<书>
<书名> 大学语文</书名>
<作者> 某某某</作者>
</书>
</书架>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名> 数据结构</书名>
<作者> 某某某</作者>
</书>
<书>
<书名> 大学语文</书名>
<作者> 某某某</作者>
</书>
</书架>book.dtd
[plain] view plaincopyprint?<!ELEMENT 书架(书+)>
<!ELEMENT 书 (书名,作者)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 书架(书+)>
<!ELEMENT 书 (书名,作者)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
2.Dom和Sax解析方法的区别:
1.Dom 解析的优点,对文档的增、删、改、查、比较方便,缺点占用的内存较大
2.Sax解析的优点是占用内存少, 解析速度快,缺点是只适合做文档的读取,不适合做文档的增、删、改、查、
3.调整JVM的大小
JVM默认的是64M的内存,超过之后,后抛出异常
配置JVM的大小如下: run as --Open Run Dialog -----------Argument----- VM argument 中输入 -Xmx90m 这样就可以配置90M的内存
4.XML解析技术
XML的解析开发包如下: Jaxp(Sun) Jdom dom4j
1.DOM解析步骤:
得到XML文档
[cpp]
// 1.创建工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
// 2.得到dom解析器
DocumentBuilder builder=factory.newDocumentBuilder();
// 3.解析xml文档,得到代表文档的document
Document document=builder.parse("src/test.xml");
// 1.创建工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
// 2.得到dom解析器
DocumentBuilder builder=factory.newDocumentBuilder();
// 3.解析xml文档,得到代表文档的document
Document document=builder.parse("src/test.xml");
更新后的内容重新写入XML文档中
[java]
// 更新后的内容写会XML文档中
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/test.xml")));
// 更新后的内容写会XML文档中
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/test.xml")));
XML中的一些方法
获取属性的
[java]
// 得到根节点
Element element = (Element) document.getElementsByTagName("书名").item(0);
String value = element.getAttribute("name");
System.out.println(value);
// 得到根节点
Element element = (Element) document.getElementsByTagName("书名").item(0);
String value = element.getAttribute("name");
System.out.println(value);
在指定位置增加节点元素
[java]
?// 创建节点
Element print = document.createElement("出版社");
print.setTextContent("南阳理工学院");
//注意一下:这里的“作者”是在xml文档中从“0”开始算起 出现的第几次,
Element bookElement = (Element) document.getElementsByTagName("作者")
.item(1);
//注意一下:这里的“书”是在xml文档中从“0”开始算起 出现的第几次,
Element rootElement = (Element) document.getElementsByTagName("书")
.item(1);
rootElement.insertBefore(print, bookElement);
// 创建节点
Element print = document.createElement("出版社");
print.setTextContent("南阳理工学院");
//注意一下:这里的“作者”是在xml文档中从“0”开始算起 出现的第几次,
Element bookElement = (Element) document.getElementsByTagName("作者")
.item(1);
//注意一下:这里的“书”是在xml文档中从“0”开始算起 出现的第几次,
Element rootElement = (Element) document.getElementsByTagName("书")
.item(1);
rootElement.insertBefore(print, bookElement);
指定位置增加属性
[java]
Element bookname = (Element) document.getElementsByTagName("书名")
.item(1);
bookname.setAttribute("name", "book");
Element bookname = (Element) document.getElementsByTagName("书名")
.item(1);
bookname.setAttribute("name", "book");
删除节点元素
[java]
/注意一下:这里的“作者”是在xml文档中从“0”开始算起 出现的第几次,
Element deleteElement = (Element) document.getElementsByTagName("作者")
.item(3);
//注意一下:这里的“书”是在xml文档中从“0”开始算起 出现的第几次,
Element rootElement = (Element) document.getElementsByTagName("书"
补充:Web开发 , 其他 ,