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")); } }
//得到的启示:看视频一定要认真,在认真,注意消化知识点, //理解什么意思,不要懒惰,以最佳的状态去听讲, //可以慢下来,注意好每一个细节操作
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- nsarray – 如何将CFArray转换为Swift Array?
- 加权间隔调度与两个可用的“工人”
- 从applicationContext.xml到beanfactiory 谈Spri
- ajax session失效后,跳转到登录页面的全局处理
- 用 CocoaPods 安装 React Native
- xml – 从Xpath 2.0中的当前节点获取父项的父级
- xml – 使用XSL在tr类中交替显示行颜色
- xml – 首先是WCF合同:没有公开任何方法
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncN
- flash as3 的loader与urlloader事件监听对象不同
热点阅读