JAXP中的dom解析xml

一.jaxp开发包对xml文件的解析,jaxp使用的解析器是IBM公司的xerces,IBM将此解析器捐献给了apache。



/**@description  xml文件*/


<?xml version="1.0" encoding="UTF-8"?><书架>

<书>

<书名 name="abc">JavaWEB</书名>

<作者>李文慧</作者>

<售价>100.00元</售价>

</书>

<书>

<书名>程序人生</书名>

<作者>小刚</作者>

<售价>28.00元</售价>

</书>

<s>aaaa</s>

</书架>



/***

 * @descriptin jaxp解析xml文档,Java自带的开发包是使用的IBM公司写的解析器xerces,但是此解析器IBM捐献                              给Apache

 * @time 2012-10-30 17:02:00

 * @author Roinli

 */

public class Demo1 {

public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException {

// 创建工厂对象

DocumentBuilderFactory newInstance = DocumentBuilderFactory.newInstance();

// 通过工厂获得解析器

DocumentBuilder builder = newInstance.newDocumentBuilder();

System.out.println(builder);

// 对xml文档解析

Document document = builder.parse(new File("src/cn//aisino//jaxp//book.xml"));

//findNode(document);// 查找节点文本值

//findNodeAtrr(document); // 查找属性值

//addNode(document);

//addNode1(document);

//deleteNode(document);

//deleteNode1(document);

//editNode1(document);

//editNodeAttr(document);

getALLNode(document.getElementsByTagName("书").item(0));

}

// 对文档增删改查

// 查找 <书名>Java就业培训教程</书名>

public static void findNode(Document document){

NodeList nodeList =document.getElementsByTagName("书名");

Node node = nodeList.item(0);

System.out.println(node.getTextContent());

}

// 查找属性<书名 name="abc">Java就业培训教程</书名>

public static void findNodeAtrr(Document document){

Node node =document.getElementsByTagName("书名").item(0);

if(node.getNodeType() == node.ELEMENT_NODE){

Element element = (org.w3c.dom.Element)node;

String attrvalue = element.getAttribute("name");

System.out.println(attrvalue);

}

}

// 增加节点,在后面追加

public static void addNode(Document document) throws TransformerException{

Node price = document.createElement("售价");

price.setTextContent("59元");

Node book = document.getElementsByTagName("书").item(0);

book.appendChild(price);

// 更新内存中document对象写入到xml文档

TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction

Transformer newTransformer = transformer.newTransformer();

// 将dom中的数据转换到book.xml文件中

newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));

}

// 增加节点 在指定位置添加节点

public static void addNode1(Document document) throws TransformerException{

Node price = document.createElement("售价");

price.setTextContent("59元");

Node book = document.getElementsByTagName("书").item(0);

// 增加节点 在指定位置添加节点

book.insertBefore(price, document.getElementsByTagName("售价").item(0));

// 更新内存中document对象写入到xml文档

TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction

Transformer newTransformer = transformer.newTransformer();

// 将dom中的数据转换到book.xml文件中

newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));

}

// 删除节点 

public static void deleteNode(Document document) throws TransformerException{

Node book = document.getElementsByTagName("书").item(0);

book.removeChild(document.getElementsByTagName("售价").item(0));

// 更新内存中document对象写入到xml文档

TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction

Transformer newTransformer = transformer.newTransformer();

// 将dom中的数据转换到book.xml文件中

newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));

}

// 删除节点 优雅方式

public static void deleteNode1(Document document) throws TransformerException{

Node price = document.getElementsByTagName("售价").item(0);

price.getParentNode().removeChild(price);;

// 更新内存中document对象

TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction

Transformer newTransformer = transformer.newTransformer();

// 将dom中的数据转换到book.xml文件中

newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));

}

// 修改节点 将书价格节点值改成2

public static void editNode1(Document document) throws TransformerException{

Node price = document.getElementsByTagName("售价").item(0);

price.setTextContent("100.00元");

// 更新内存中document对象

TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction

Transformer newTransformer = transformer.newTransformer();

// 将dom中的数据转换到book.xml文件中

newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));

}

// 修改节点 属性值

public static void editNodeAttr(Document document) throws TransformerException{

Node book = document.getElementsByTagName("书名").item(0);

if(book.getNodeType() == book.ELEMENT_NODE){

Element element = (org.w3c.dom.Element)book;

Attr attributeNode = element.getAttributeNode("name");

attributeNode.setValue("yyyyy");

}

// 更新内存中document对象

TransformerFactory transformer = TransformerFactory.newInstance(); //Transaction

Transformer newTransformer = transformer.newTransformer();

// 将dom中的数据转换到book.xml文件中

newTransformer.transform(new DOMSource(document),new StreamResult(new File("src/cn//aisino//jaxp//book.xml")));

}

// 遍历xml文档的所有内容  "递归"

public static void getALLNode(Node node){

if(node.getNodeType() == Node.ELEMENT_NODE){

//System.out.println(node.getNodeName());

String content = node.getTextContent().trim();

if(!"".equals(content)){

System.out.println(content.trim());

}

NodeList childNodes = node.getChildNodes();

for(int i=0;i < childNodes.getLength();i++){

Node item = childNodes.item(i);

getALLNode(item);

}

}

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值