加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml的增,删,改,查

发布时间:2020-12-16 08:56:25 所属栏目:百科 来源:网络整理
导读:学习王昭珽老师的心得体会! xml部分 ?xml version="1.0" encoding="utf-8" standalone="no"? 书架 书 出版社 = "湖北文理学院" 书名 java就业指导教程/书名 作者张孝祥/作者 售价38元/售价 内部价15.00元/内部价 /书 书 书名 javaScripe网页开发/书名 作者
学习王昭珽老师的心得体会!
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"));
}
}



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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读