时间:2021-05-19
本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示。
源代码:
package com.zc.homeWork18;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import javax.xml.xpath.XPath;import javax.xml.xpath.XPathConstants;import javax.xml.xpath.XPathExpressionException;import javax.xml.xpath.XPathFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class XMLWriter { private static String xmlPath = "src\\com\\zc\\homeWork18\\MyXml.xml"; public static void getFamilyMemebers() { /* * 创建文件工厂实例 */ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 如果创建的解析器在解析XML文档时必须删除元素内容中的空格,则为true,否则为false dbf.setIgnoringElementContentWhitespace(true); try { /* * 创建文件对象 */ DocumentBuilder db = dbf.newDocumentBuilder();// 创建解析器,解析XML文档 Document doc = db.parse(xmlPath); // 使用dom解析xml文件 /* * 历遍列表,进行XML文件的数据提取 */ // 根据节点名称来获取所有相关的节点 NodeList sonlist = doc.getElementsByTagName("son"); for (int i = 0; i < sonlist.getLength(); i++) // 循环处理对象 { // 节点属性的处理 Element son = (Element) sonlist.item(i); // 循环节点son内的所有子节点 for (Node node = son.getFirstChild(); node != null; node = node .getNextSibling()) { // 判断是否为元素节点 if (node.getNodeType() == Node.ELEMENT_NODE) { String name = node.getNodeName(); String value = node.getFirstChild().getNodeValue(); System.out.println(name + " : " + value); } } } } catch (Exception e) { System.out.println(e.getMessage()); } } // 修改 public static void modifySon() { // 创建文件工厂实例 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setIgnoringElementContentWhitespace(true); try { // 从XML文档中获取DOM文档实例 DocumentBuilder db = dbf.newDocumentBuilder(); // 获取Document对象 Document xmldoc = db.parse(xmlPath); // 获取根节点 Element root = xmldoc.getDocumentElement(); // 定位id为001的节点 Element per = (Element) selectSingleNode("/father/son[@id='001']", root); // 将age节点的内容更改为28 per.getElementsByTagName("age").item(0).setTextContent("28"); // 保存 TransformerFactory factory = TransformerFactory.newInstance(); Transformer former = factory.newTransformer(); former.transform(new DOMSource(xmldoc), new StreamResult(new File( xmlPath))); } catch (Exception e) { System.out.println(e.getMessage()); } } // 获取目标节点,进行删除,最后保存 public static void discardSon() { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setIgnoringElementContentWhitespace(true); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document xmldoc = db.parse(xmlPath); // 获取根节点 Element root = xmldoc.getDocumentElement(); // 定位根节点中的id=002的节点 Element son = (Element) selectSingleNode("/father/son[@id='002']", root); // 删除该节点 root.removeChild(son); // 保存 TransformerFactory factory = TransformerFactory.newInstance(); Transformer former = factory.newTransformer(); former.transform(new DOMSource(xmldoc), new StreamResult(new File( xmlPath))); } catch (Exception e) { System.out.println(e.getMessage()); } } // 新增节点 public static void createSon() { // 创建文件工厂实例 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setIgnoringElementContentWhitespace(false); try { DocumentBuilder db = dbf.newDocumentBuilder(); // 创建Document对象 Document xmldoc = db.parse(xmlPath); // 获取根节点 Element root = xmldoc.getDocumentElement(); // 创建节点son,设置对应的id为004 Element son = xmldoc.createElement("son"); son.setAttribute("id", "004"); // 创建节点name Element name = xmldoc.createElement("name"); name.setTextContent("小儿子"); son.appendChild(name); // 创建节点age Element age = xmldoc.createElement("age"); age.setTextContent("0"); son.appendChild(age); // 把son添加到根节点中 root.appendChild(son); // 保存 TransformerFactory factory = TransformerFactory.newInstance(); Transformer former = factory.newTransformer(); former.transform(new DOMSource(xmldoc), new StreamResult(new File( xmlPath))); } catch (Exception e) { System.out.println(e.getMessage()); } } // 修改节点信息 public static Node selectSingleNode(String express, Element source) { Node result = null; //创建XPath工厂 XPathFactory xpathFactory = XPathFactory.newInstance(); //创建XPath对象 XPath xpath = xpathFactory.newXPath(); try { result = (Node) xpath.evaluate(express, source, XPathConstants.NODE); System.out.println(result); } catch (XPathExpressionException e) { System.out.println(e.getMessage()); } return result; } // 打印 public static void main(String[] args) { getFamilyMemebers(); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); modifySon(); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); System.out.println("修改数据"); getFamilyMemebers(); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); discardSon(); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); System.out.println("删除数据"); getFamilyMemebers(); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); createSon(); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); System.out.println("添加数据"); getFamilyMemebers(); }}XML文件
<?xml version="1.0" encoding="UTF-8" standalone="no"?><father> <son id="001"> <name>老大</name> <age>20</age> </son> <son id="002"> <name>老二</name> <age>18</age> </son> <son id="003"> <name>老三</name> <age>13</age> </son></father>总结
以上就是本文关于java使用DOM对XML文档进行增删改查操作实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在java中,原生解析xml文档的方式有两种,分别是:Dom解析和Sax解析Dom解析功能强大,可增删改查,操作时会将xml文档以文档对象的方式读取到内存中,因
本文实例讲述了PHP实现对xml进行简单的增删改查(CRUD)操作。分享给大家供大家参考,具体如下:假如有下面xml文件:55.85640339如何使用php对
本文实例为大家分享了Java代码对HDFS进行增删改查操作的具体代码,供大家参考,具体内容如下importjava.io.File;importjava.io.
html文件:复制代码代码如下:js操作Xml增删改查(IE下)Xml文件:复制代码代码如下:treemale
本文实例讲述了C#实现XML文档的增删改查功能。分享给大家供大家参考,具体如下:1、创建实例XML文件(Books.xml)EverydayItalianGia