微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xml的增,删,改,查

学习王昭珽老师的心得体会!
xml部分
<?xml version="1.0" encoding="utf-8" standalone="no"?>
< 书架>

<书 出版社 = "湖北文理学院">
<书名 >java就业指导教程</书名>
<作者>张孝祥</作者>
<售价>38元</售价>
<内部价>15.00元</内部价>

</书>

<书>
<书名 >javaScripe网页开发</书名>
<作者>毕向东</作者>
<售价>28.00</售价>
</书>
</书架>

JAVA代码部分
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

//注意包的引入

public class JaxpDomDemo {
//利用jaxp进行dom解析
/**
* @param args
* @throws ParserConfigurationException
*/
public static void main(String[] args) throws Exception {
// Todo Auto-generated method stub
//*得到解析工厂DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

//*得到解析器DocumentBuilder
DocumentBuilder builder = factory.newDocumentBuilder();

//解析指定的xml文档,得到代表内存的Dom树的Document的对象
Document document = builder.parse("src/book.xml");
test8(document);
}




//----------------1.得到某个具体节点内容:打印第二本书的作者

public static void test1(Document document){
//根据标签名称获取所有的作者的元素

NodeList nl = document.getElementsByTagName("作者");
//按照索引取第二个元素
Node node = nl.item(1);//搜索所有的作者然后取第二个,他是按内容搜索,然后排列!
//获取该节点的内容,打印该元素的文本
String text = node.getTextContent();
System.out.println(text);

}


//----------------2.遍历所有元素的节点(递归)

public static void test2(Node node){
//判断当前节点是不是一个元素节点
if(node.getNodeType() == Node.ELEMENT_NODE){
//如果节点,则打印它的名称
System.out.println(node.getNodeName());
}
//获取该节点的孩子节点
NodeList nl = node.getChildNodes();
//确定孩子们的个数
int len = nl.getLength();
//递归遍历输出孩子们的个数
for(int i = 0;i < len;i++){
Node n = nl.item(i);
test2(n);
}
}



//--------------3.修改某个元素的主体内容

public static void test3(Document document) throws Exception{
//找到第一本书的售价
//并改变它的售价
NodeList nl3 = document.getElementsByTagName("售价");
//得到第一本书的“售价“的节点
Node text3 = nl3.item(0);
//设置改变节点的内容
text3.setTextContent("38.00元");

//然后将改变后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));


System.out.println(text3.getTextContent());
}

//---------------4.向某个元素的节点中增加子元素节点:在第一本树增加内部价:15元

public static void test4(Document document)throws Exception{
//创建一个新的元素并设置起主题内容
Element e = document.createElement("内部价");
//找到第一本书
e.setTextContent("15.00元");
//挂接到第一本书上
Node firstNode = document.getElementsByTagName("书").item(0);
firstNode.appendChild(e);
//然后将新添加后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));
}



//------------5.向指定元素增加同级元素节点

public static void test5(Document document)throws Exception{
//增加一个批发价
Element e = document.createElement("批发价");
//找到第一本书
e.setTextContent("8.00元");
//在第一本书的售价前挂接一本批发价
Node firstNode = document.getElementsByTagName("售价").item(0);
//新添加的节点一定要在父元素的之后插入插入节点
firstNode.getParentNode().insertBefore(e,firstNode);

//然后将新添加后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));
}



//-----------------6.删除指定元素

public static void test6(Document document)throws Exception{

Node find1 = document.getElementsByTagName("批发价").item(0);
//找到要删除的节点,然后用爸爸删除
find1.getParentNode().removeChild(find1);

//然后将新添加后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));
}



//---------------7.操作xml文件属性:查找第一本书的出版社

public static void test7(Document document)throws Exception{
//找到要添加节点的属性
Node find2 = document.getElementsByTagName("书").item(0);
//打印他的属性
Element e = (Element) find2;//书才有的属性(Element, node不具有属性
System.out.println(e.getAttribute("出版社")+" 出版社");
}



//-----------8.添加一个属性给第二本书

public static void test8(Document document)throws Exception{
//找到要添加节点的属性
Node find2 = document.getElementsByTagName("书").item(1);
//打印他的属性
Element e = (Element) find2;//书才有的属性(Element, node不具有属性
e.setAttribute("出版社","原襄樊学院");

//然后将新添加后的dom树输入book.xml中
TransformerFactory factory = TransformerFactory.newInstance();
Transformer ts = factory.newTransformer();//将改变后的document 的树转到xml文件
ts.transform(new DOMSource(document),new StreamResult("src/book.xml"));
}
}



//得到的启示:看视频一定要认真,在认真,注意消化知识点, //理解什么意思,不要懒惰,以最佳的状态去听讲, //可以慢下来,注意好每一个细节操作

原文地址:https://www.jb51.cc/xml/296181.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。