(18)XML应用3
来源:互联网 发布:知豆电动汽车租赁app 编辑:程序博客网 时间:2024/05/01 00:21
11,09,29
课堂主要内容:
1、如果需要DOM解析器,就用DocumentBuilder生成一个解析器。
如果需要SAX解析器,就用SAXParser生成一个解析器。
2、在Javax.xml.parsers包下,
3、Document doc .文档对象
Node node .节点对象
4、getElementsByTagName()
getTextContent() //返回的是元素的文本值
<书名>jsp程序设计</书名>
它是一个Node节点——是一个元素节点Element节点
方法一:
Node node .
node.getNodeType(); //返回的是1
node.getNodeName() //返回的是书名
node.getNodeValue() //返回的是null ,因为是Element节点,所以nodeValue值为null
node.getTextContent() //返回值是jsp程序设计
方法二:
Text text=(Text)node.getChildNodes().item(0);
text.getNodeValue(); //返回的是jsp程序设计,因为这个节点是文本节点,所以当我们在获取nodeValue值是jsp程序设计
5、得到属性值的方法:
(1)getNodeValue()
(2)getValue()
(3)getTextContent()
以上三种方法返回的值是相同的。
if(node.getNodeType()==Node.ELEMENT_NODE) //判断是不是元素
Element slement=(Element) node; //强制造型
Sysout.out.println(element.getAttribute(" ")); //String
Attr att=element.getAttributenode("name"); //Attr节点
if(node instanceof Element){
Element slement=(Element) node; //强制造型
Sysout.out.println(element.getAttribute(" ")); //String
Attr att=element.getAttributenode("name"); //Attr节点
sysout.out.println(att.getNodeValue()+" "+att.getValue()+" "+att.getTestContent());
createElement() ;//创建一个元素
/*节点的添加*/
public static void createElement(Document doc){
//确定添加节点的位置,找到父节点的位置,在父节点里添加子节点。item(0),在第几个节点添加属性
Node book=doc.getElementsByTagName("书").item(0);
//生成一个新节点
Element element=doc.dreateElement("出版社");
//(1)
//element.setTextContent("清华大学");
//(2)创建一个文本节点
Text text=doc.sreateTextNode("清华大学");
element.appendChild(text);
//在指定位置把新生成的节点添加进去
book.appendChild(element);
//将内存中树状的结构把doc写入到xml文件中
//(1)生成工厂对象
TransformerFactory factory=TransformerFactory.newInstance();
//(2)由工厂对象生成转换对象Transformer
Transformer trans=factory.newTransformer();
//(3)通过trans实现doc转换到xml文档中,//需要一个DOMSource对象代表源树
// trans.transform(xmlSource,outputTarget);
trans.transform(new DOMSource(doc),new StreamResult(new File ("src/BOOK.xml")));
}
}
/*确定插入点的位置*/
Node author=doc.getElementsByTagName("作者").item(0);
Node parent=author.getParentNode(); //父亲
Node bother=author.getNextSibling(); //得到的是他的弟弟,后一个
//创建一个新节点,就是出版社节点
Element element=doc.createElement("出版社");
element.setTextContent("清华大学出版社");
//插入节点:在书这个节点中在作者节点之前添加了出版社
parent.insertBefore(element.author);
<出版社>dfsfsf</出版社>
6、更新XML文档:
javax.xml.transform
7、//Node 是一个接口。当形参是接口类型的时候,那么实参是实现了该接口的类的对象。
void func(Node node){
//
}
//调用方法体
Node node
Document doc
Element element
func(实参);实参:可以是Node类型对象,还可以是Node的子类的对象
8、删除操作:
public static void deleteElement(Document doc){
//获取要删除的那个节点
Node book=doc.getElementsByTagName("售价").item(1);
node.getParentNode().removeChild(doc);
//将内存中树状的结构把doc写入到xml文件中
//(1)生成工厂对象
TransformerFactory factory=TransformerFactory.newInstance();
//(2)由工厂对象生成转换对象Transformer
Transformer trans=factory.newTransformer();
//(3)通过trans实现doc转换到xml文档中,//需要一个DOMSource对象代表源树
// trans.transform(xmlSource,outputTarget);
trans.transform(new DOMSource(doc),new StreamResult(new File ("src/BOOK.xml")));
}
}
9、更新操作:
public static void updateElement(Document doc){
//获取要修改的那个节点
Node book=doc.getElementsByTagName("售价").item(0);
node.setTextContent("50");//修改内容
//修改属性
if(node instanceof Element){
Element element=(Element) node; //将node造型成element
Attr att=element.getAttributeNode("type");
att.setValue("美元");
}
//将内存中树状的结构把doc写入到xml文件中
//(1)生成工厂对象
TransformerFactory factory=TransformerFactory.newInstance();
//(2)由工厂对象生成转换对象Transformer
Transformer trans=factory.newTransformer();
//(3)通过trans实现doc转换到xml文档中,//需要一个DOMSource对象代表源树
// trans.transform(xmlSource,outputTarget);
trans.transform(new DOMSource(doc),new StreamResult(new File ("src/BOOK.xml")));
}
}
二、SAX解析
1、SAX采用的是事件处理的方式解析XML文件,利用SAX解析XML文档,涉及两个部分:解析器和事件处理器。
2、SAX不能不做增删改查操作。只能写。
3、阅读ContentHandler API文档,常用方法:startElement、endElement、characters
4、Sax代码:
创建SAXTest.java
//先获取SAX解析器工厂类的对象
SAXParserFactory factory=SAXParserFactory.newInstance();
//获取SAX解析器
SAXParser sax=factory.newSAXParser(); //有异常。 throws Exception
//通过sax解析器开始解析文档
sax.parse(new File("src/BOOK.xml"),new BookHandler());
//用来解析BOOK文档
class BookHandler extends DefaultHandler{
}
DefaultHandler 默认事件处理器
- (18)XML应用3
- XML应用
- xml应用?
- XML应用
- xml应用
- xml应用
- XML应用
- XML 应用
- XML教程(3)--CSS在xml中的应用
- XML在参数中的应用-3
- XML SOAP应用简介
- XML应用简介
- PHP中的XML应用
- XML简单应用
- 应用XML架构文件
- PHP中的XML应用
- XML SOAP应用简介
- [xml]内部DTD应用
- [职场]职场中的10种贵人
- Android中ProgressDialog的简单示例
- 网游UI解决方案的选择
- Linux重启网卡的方法
- Emacs-eshell
- (18)XML应用3
- YUV MSDN 详细解说(包含:颜色空间和色度采样率转换)
- error LNK2019: 无法解析的外部符号 该符号在函数 中
- css语法概述
- Weblogic10.3_Windows优化设置
- realloc 用法
- HowTo Restore RMAN Disk backups of RAC Database to Single Instance On Another Node [ID 415579.1]
- Actors in Scala(Scala中的Actor)(预打印版) 第一章 Concurrency Everywhere (A)
- android--widget介绍之ImageButton