JavaWeb学习笔记-XML-3

8 篇文章 0 订阅

XML解析:dom&sax

区别
dom:内存消耗大,容易增删改查
sax:内存消耗小,易加载,不适合增删改查

  • XML解析开发包
    – Jaxp(sun)
    – Jdom
    – dom4j

Jaxp

//创建工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInsatnce();
//得到DOM解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//解析XML,得到document
Doucment document = builder.parse("book.xml");
//使用dom方式对xml文档进行curd
//<书名>java</书名>的值
NodeList list = 
document.getElementsByTagName("书名");
Node node = list.item(1);
String content = node.getTextContent();
//得到根节点,循环遍历节点,得到所有标签
Node root = 
Document.getElementsByTagName("书架").item(0);
list(root);
public void list(Node node){
    if(node instanceof Element){
        System.out.prinln(node.getNodeName());
    }
    NodeList list = node.getChildNodes();
    for(int i=0; i<list.getLength(); i++){
        Node child = list.item(0);
        list(child);    
    }
}
//得到标签属性值
//<书名>java</书名>
Element book = (Element)document.getElementsByTagName("书名").item(0);
Steing value = book.getAttribute("name");
//创建节点
Element price = document.createElement("售价");
price.setTextContent("59元");
//把节点挂到第一本书上
Element book = (Element)document.getElementsByTagName("书名").item(0);
book.appendChild(price);
//把内存写入文档
TransformerFactory tffactory = TransformerFactory.newInsance();
Transformer tf = tffactory.newTransfomer();
tf.transform(new DOMSource(document),new StreanResult(new FileOutputStream("book.xml")));
//指定位置添加
//创建节点
Element price = document.createElement("售价");
price.setTextContent("59元");
//得到参考节点
Element refNode = document.getElementsByTagName("售价").item(0);
//得到挂载节点
Element book = (Element)document.getElementsByTagName("书名").item(0);
//往book节点的指定位置插入
book.insertBefore(price,refNode);
//把内存写入文档
TransformerFactory tffactory = TransformerFactory.newInsance();
Transformer tf = tffactory.newTransfomer();
tf.transform(new DOMSource(document),new StreanResult(new FileOutputStream("book.xml")));
//添加name="xxx"属性
Element bookname = (Element)document.getElementsByTagName("书名").item(0);
bookname.setAttribute("name","xxx");
//把内存写入文档
TransformerFactory tffactory = TransformerFactory.newInsance();
Transformer tf = tffactory.newTransfomer();
tf.transform(new DOMSource(document),new StreanResult(new FileOutputStream("book.xml")));
//得到需要删除的节点
Element e = 
(Element)document.getElementsByTagName("售价").item(0);
//得到需要删除节点父节点
Element book = (Element)document.getElementsByTagName("书").item(0);
//删除节点
book.removeChild(e);
//简便方法
//e.getParentNode().removeChild(e);
//更新节点
Element price = 
(Element)document.getElementsByTagName("售价").item(0);
price.setTextContent("22元");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值