我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java 中怎么利用org.w3c.dom操作XML文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java 中怎么利用org.w3c.dom操作XML文件

java 中怎么利用org.w3c.dom操作XML文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

下面直接贴出样例代码:

import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;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.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Date;import java.util.HashSet;import java.util.LinkedHashMap;import java.util.LinkedHashSet;import java.util.List;import java.util.Map;import java.util.Scanner;import java.util.Set;public class XMLSample{private static void writeXML(Document document, String filePath) { TransformerFactory transFactory = TransformerFactory.newInstance();Transformer transformer = null;try {String parent = new File(filePath).getParent();File pDir = new File(parent);if (!pDir.exists()) {pDir.mkdirs();}OutputStream os = new FileOutputStream(new File(filePath));transformer = transFactory.newTransformer();transformer.setOutputProperty(OutputKeys.INDENT, "yes");transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");DOMSource source = new DOMSource();source.setNode(document);StreamResult result = new StreamResult();result.setOutputStream(os);transformer.transform(source, result);os.flush();} catch (TransformerConfigurationException e) {e.printStackTrace();} catch (TransformerException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} private static Document readXML(String file) { try {            // 得到DOM解析器的工厂实例DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();            // 从DOM工厂中获得DOM解析器DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();            // 把要解析的xml文档读入DOM解析器Document doc = dbBuilder.parse(file);return doc;} catch (Exception e) {e.printStackTrace();}return null;} public static void showXMLDetail() { Document document = readXML(mapperFilePath);        // 获取标签名为"dataset"的元素Node mapper = document.getElementsByTagName("dataset").item(0);         // 下面依次读取dataset元素的每个子元素,每个子元素的标签名字为nodefor (int i = 0; i < mapper.getChildNodes().getLength(); i++) {Node node = mapper.getChildNodes().item(i);String s = item.getNodeName();if(s.toLowerCase().equals("#comment")){System.out.println("这是注释内容: "+node.getTextContent());}else if(s.toLowerCase().equals("#text")){System.out.println("呐,这是标签之外的文本: "+node.getTextContent());}else if ("node".equals(s)) {// 获取元素属性的值String column = item.getAttributes().getNamedItem("column").getNodeValue();String field = item.getAttributes().getNamedItem("property").getNodeValue();}else{// 其他的就不要了} } } public static void generateXML(){try {Element root;Set<String> set = new HashSet<>();set.add("node");DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();factory.setNamespaceAware(true);DocumentBuilder documentBuilder = null;documentBuilder = factory.newDocumentBuilder();Document document = documentBuilder.newDocument();root = document.createElement("dataset");document.appendChild(root);set.forEach(p -> {Element element = document.createElement(p);element.setAttribte("column","haha");element.setAttribte("property","heihei");root.appendChild(element);});writeXML(document, "d:/allTables.xml");} catch (ParserConfigurationException e) {e.printStackTrace();}}}

Java操作XML(使用org.w3c.dom)

一、创建DOM
XMLBuilder.java  用于创建DOM,Root结点 package rochoc.xml.oper; import java.io.File;import java.io.IOException; import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException; import org.apache.log4j.Logger;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.xml.sax.SAXException;  public class XmlBuilder{        public XmlBuilder(String path)    {        this.path=path;        init();    }             public void init()    {        buildDocument();        buildRoot();    }             private void buildDocument()    {        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();        try        {            DocumentBuilder builder=factory.newDocumentBuilder();            logger.debug("Construct document builder success.");            doc=builder.parse(new File(path));                        logger.debug("Build xml document success.");        }catch(ParserConfigurationException e)        {            logger.error("Construct document builder error:"+e);        }catch(SAXException e)        {            logger.error("Parse xml file error:"+e);        }catch(IOException e)        {            logger.error("Read xml file error:"+e);        }    }             private void buildRoot()    {        root=doc.getDocumentElement();    }             public Document getDoc()    {        return doc;    }        public void setDoc(Document doc)    {        this.doc = doc;    }        public String getPath()    {        return path;    }        public void setPath(String path)    {        this.path = path;    }        public Element getRoot()    {        return root;    }        public void setRoot(Element root)    {        this.root = root;    }        private String path=null;//xml文件路径    private Document doc=null;//xml文件对应的document    private Element root=null;//xml文件的根结点    private Logger logger=Logger.getLogger(getClass().getName());}
二、查找,插入,删除,修改
XmlOper.java  用于操作XML文件,包括查找、新增、删除、修改结点  package rochoc.xml.oper; import java.util.ArrayList; import org.apache.log4j.Logger;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;  public class XmlOper{        private XmlOper()    {            }             public static NodeList getNodeList(Element parent)    {        return parent.getChildNodes();    }             public static Element [] getElementsByName(Element parent,String name)    {        ArrayList resList=new ArrayList();        NodeList nl=getNodeList(parent);        for(int i=0;i<nl.getLength();i++)        {            Node nd=nl.item(i);            if(nd.getNodeName().equals(name))            {                resList.add(nd);            }        }        Element [] res=new Element [resList.size()];        for(int i=0;i<resList.size();i++)        {            res[0]=(Element)resList.get(i);        }                logger.debug(parent.getNodeName()+"'s children of "+name+                "'s num:"+res.length);        return res;    }             public static String getElementName(Element element)    {        return element.getNodeName();    }             public static String getElementValue(Element element)    {        NodeList nl=element.getChildNodes();        for(int i=0;i<nl.getLength();i++)        {            if(nl.item(i).getNodeType()==Node.TEXT_NODE)//是一个Text Node            {                            logger.debug(element.getNodeName()+" has a Text Node.");                return element.getFirstChild().getNodeValue();            }        }           logger.error(element.getNodeName()+" hasn't a Text Node.");        return null;    }             public static String getElementAttr(Element element,String attr)    {        return element.getAttribute(attr);    }             public static void setElementValue(Element element,String val)    {        Node node=element.getOwnerDocument().createTextNode(val);        NodeList nl=element.getChildNodes();        for(int i=0;i<nl.getLength();i++)        {            Node nd=nl.item(i);            if(nd.getNodeType()==Node.TEXT_NODE)//是一个Text Node            {                              nd.setNodeValue(val);                  logger.debug("modify "+element.getNodeName()+"'s node value succe.");                  return;            }        }           logger.debug("new "+element.getNodeName()+"'s node value succe.");        element.appendChild(node);            }             public static void setElementAttr(Element element,            String attr,String attrVal)    {        element.setAttribute(attr,attrVal);    }                  public static void addElement(Element parent,Element child)    {        parent.appendChild(child);    }             public static void addElement(Element parent,String tagName)    {                Document doc=parent.getOwnerDocument();        Element child=doc.createElement(tagName);        parent.appendChild(child);    }             public static void addElement(Element parent,String tagName,String text)    {        Document doc=parent.getOwnerDocument();        Element child=doc.createElement(tagName);        setElementValue(child,text);        parent.appendChild(child);    }             public static void removeElement(Element parent,String tagName)    {        logger.debug("remove "+parent.getNodeName()+"'s children by tagName "+tagName+" begin...");        NodeList nl=parent.getChildNodes();        for(int i=0;i<nl.getLength();i++)        {            Node nd=nl.item(i);            if(nd.getNodeName().equals(tagName))            {                parent.removeChild(nd);                logger.debug("remove child '"+nd+"' success.");            }        }        logger.debug("remove "+parent.getNodeName()+"'s children by tagName "+tagName+" end.");    }                     static Logger logger=Logger.getLogger("XmlOper");}
三、新建XML文件
XmlCreater.java  用于创建XML文件 package rochoc.xml.oper; import java.io.File; import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult; import org.apache.log4j.Logger;import org.w3c.dom.Document;import org.w3c.dom.Element;  public class XmlCreater{        public XmlCreater(String path)    {        this.path=path;        init();    }             private void init()    {        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();        try        {            DocumentBuilder builder=factory.newDocumentBuilder();            doc=builder.newDocument();//新建DOM        }catch(ParserConfigurationException e)        {            logger.error("Parse DOM builder error:"+e);        }    }             public Element createRootElement(String rootTagName)    {             if(doc.getDocumentElement()==null)        {            logger.debug("create root element '"+rootTagName+"' success.");            Element root=doc.createElement(rootTagName);            doc.appendChild(root);            return root;        }        logger.warn("this dom's root element is exist,create fail.");        return doc.getDocumentElement();    }             public Element createElement(Element parent,String tagName)    {        Document doc=parent.getOwnerDocument();        Element child=doc.createElement(tagName);        parent.appendChild(child);                return child;    }             public Element createElement(Element parent,String tagName,String value)    {        Document doc=parent.getOwnerDocument();        Element child=doc.createElement(tagName);        XmlOper.setElementValue(child,value);        parent.appendChild(child);        return child;    }             public void createAttribute(Element parent,String attrName,String attrValue)    {        XmlOper.setElementAttr(parent,attrName,attrValue);            }             public void buildXmlFile()    {        TransformerFactory tfactory=TransformerFactory.newInstance();        try        {            Transformer transformer=tfactory.newTransformer();            DOMSource source=new DOMSource(doc);            logger.debug("New DOMSource success.");            StreamResult result=new StreamResult(new File(path));            logger.debug("New StreamResult success.");            transformer.setOutputProperty("encoding","GBK");            transformer.transform(source,result);            logger.debug("Build XML File '"+path+"' success.");        }catch(TransformerConfigurationException e)        {            logger.error("Create Transformer error:"+e);        }catch(TransformerException e)        {            logger.error("Transformer XML file error:"+e);        }    }             public Document getDoc()    {        return doc;    }        public void setDoc(Document doc)    {        this.doc = doc;    }        public String getPath()    {        return path;    }        public void setPath(String path)    {        this.path = path;    }        private Logger logger = Logger.getLogger(getClass().getName());    private Document doc=null;//新创建的DOM    private String path=null;//生成的XML文件绝对路径}

关于java 中怎么利用org.w3c.dom操作XML文件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java 中怎么利用org.w3c.dom操作XML文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java 中怎么利用org.w3c.dom操作XML文件

java 中怎么利用org.w3c.dom操作XML文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下面直接贴出样例代码:import javax.xml.parsers
2023-06-20

C#实现利用Linq操作Xml文件

这篇文章主要为大家详细介绍了C#如何利用Linq实现操作Xml文件,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
2022-12-29

利用dom4j如何实现操作xml文件中的demo

本篇文章为大家展示了利用dom4j如何实现操作xml文件中的demo,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。废话不多说,直接上代码package com.cn.shop.util;import
2023-05-31

怎么在Java中利用File对文件进行操作

本篇文章为大家展示了怎么在Java中利用File对文件进行操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1java.io.FileFile用于表示文件系统中的一个文件或目录通过File可以:
2023-05-31

如何利用JAVA操作EXCEL文件

这篇文章给大家分享的是有关如何利用JAVA操作EXCEL文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。利用JAVA操作EXCEL文件使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要
2023-06-03

利用java怎么对xml文件进行解析

利用java怎么对xml文件进行解析?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、【基础知识——扫盲】sax、dom是两种对xml文档进行解析的方法(没有具体实现,只是接口
2023-05-31

Java中怎么操作NIO2文件

今天就跟大家聊聊有关Java中怎么操作NIO2文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。从classpath中读取过文件的人,都知道需要写一些读取流的方法,很是繁琐。最近使用
2023-06-16

C#中怎么利用FileStream对文件进行操作

C#中怎么利用FileStream对文件进行操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C# FileStream写文件的操作实例:///先导入命名空间:
2023-06-17

CentOS中怎么利用mkstemp命令操作临时文件

CentOS中怎么利用mkstemp命令操作临时文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。mkstemp函数int mkstemp(char *temp
2023-06-10

php中怎么利用expat方式解析xml文件

这篇文章将为大家详细讲解有关php中怎么利用expat方式解析xml文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。test.xml:
2023-06-04

C#中XML操作类怎么使用

在C#中,可以使用System.Xml命名空间中的类来操作XML。下面是一个简单的示例,演示了如何创建XML文档、添加元素、保存和读取XML文档。首先,需要引入System.Xml命名空间:using System.Xml;创建XML文
2023-10-22

利用HDFS怎么实现多文件Join操作

本篇文章为大家展示了利用HDFS怎么实现多文件Join操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。详解HDFS多文件Join操作的实例最近在做HDFS文件处理之时,遇到了多文件Join操作,其
2023-05-31

Java中的xml文件怎么利用正则表达式进行解析

这篇文章将为大家详细讲解有关Java中的xml文件怎么利用正则表达式进行解析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、编写Node类Node对象是文档解析的基础,最终可以通过对象的不
2023-05-31

Java中Word怎么利用com进行操作

Java中Word怎么利用com进行操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实例代码如下:import com.jacob.activeX.ActiveXComp
2023-05-31

怎么在java中利用default操作接口

怎么在java中利用default操作接口?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基
2023-06-14

Java 7中怎么对文件进行操作

这篇文章将为大家详细讲解有关Java 7中怎么对文件进行操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建和删除文件下面的代码片段向你展示的是用 Files.createFile(Pat
2023-06-17

HDFS怎么利用JAVA进行操作

这篇文章给大家介绍HDFS怎么利用JAVA进行操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Jar包引入,pom.xml: org.apache.hadoop
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录