iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java 中怎么利用org.w3c.dom操作XML文件
  • 280
分享到

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

2023-06-20 20:06:55 280人浏览 独家记忆
摘要

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

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文件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: java 中怎么利用org.w3c.dom操作XML文件

本文链接: https://www.lsjlt.com/news/299893.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • java 中怎么利用org.w3c.dom操作XML文件
    java 中怎么利用org.w3c.dom操作XML文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下面直接贴出样例代码:import javax.xml.pa...
    99+
    2023-06-20
  • java 如何使用org.w3c.dom操作XML文件
    本篇介绍在java中,如何使用org.w3c.dom中的相关内容来操作XML文件。包括: 如何在内存中构建XML文件并写入磁盘; 如何从磁盘读取XML文件到内存; ...
    99+
    2024-04-02
  • C#实现利用Linq操作Xml文件
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-29
    C# Linq操作Xml C# 操作Xml C# Linq Xml
  • Java中使用DOM4J生成xml文件并解析xml文件的操作
    目录一、前言二、准备依赖三、生成xml文件生成标准展示四、解析xml文件五、总结一、前言 现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有...
    99+
    2024-04-02
  • 利用dom4j如何实现操作xml文件中的demo
    本篇文章为大家展示了利用dom4j如何实现操作xml文件中的demo,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。废话不多说,直接上代码package com.cn.shop.util;import...
    99+
    2023-05-31
    dom4j xml demo
  • 怎么在Java中利用File对文件进行操作
    本篇文章为大家展示了怎么在Java中利用File对文件进行操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1java.io.FileFile用于表示文件系统中的一个文件或目录通过File可以:...
    99+
    2023-05-31
    java file
  • 如何利用JAVA操作EXCEL文件
    这篇文章给大家分享的是有关如何利用JAVA操作EXCEL文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。利用JAVA操作EXCEL文件使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要...
    99+
    2023-06-03
  • 利用java怎么对xml文件进行解析
    利用java怎么对xml文件进行解析?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、【基础知识——扫盲】sax、dom是两种对xml文档进行解析的方法(没有具体实现,只是接口...
    99+
    2023-05-31
    java xml ava
  • Java中怎么操作NIO2文件
    今天就跟大家聊聊有关Java中怎么操作NIO2文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。从classpath中读取过文件的人,都知道需要写一些读取流的方法,很是繁琐。最近使用...
    99+
    2023-06-16
  • C#实用教程操作xml文件
    操作XML文件是C#编程中非常常见的任务之一。下面是一个简单的C#实用教程,演示如何使用C#读取、编辑和保存XML文件。读取XML文...
    99+
    2023-09-15
    C#
  • C#中怎么利用FileStream对文件进行操作
    C#中怎么利用FileStream对文件进行操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C# FileStream写文件的操作实例:///先导入命名空间:...
    99+
    2023-06-17
  • Python操作XML文件的使用指南
    目录什么是 XMLPython XML 解析模块xml.etree.ElementTree 模块使用 parse() 函数使用 fromstring() 函数寻找感兴趣的元素修改 X...
    99+
    2024-04-02
  • CentOS中怎么利用mkstemp命令操作临时文件
    CentOS中怎么利用mkstemp命令操作临时文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。mkstemp函数int mkstemp(char *temp...
    99+
    2023-06-10
  • php中怎么利用expat方式解析xml文件
    这篇文章将为大家详细讲解有关php中怎么利用expat方式解析xml文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。test.xml:<xml version="...
    99+
    2023-06-04
  • C#操作XML文件要注意什么
    本篇内容主要讲解“C#操作XML文件要注意什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#操作XML文件要注意什么”吧!要对XML文件进行操作,须要声明以下命名空间:using Syste...
    99+
    2023-06-17
  • Go语言中XML文件的读写操作
    目录写 XML 文件读 XML 文件XML(extensible Markup Language)格式被广泛用作一种数据交换格式,并且自成一种文件格式。与上一节介绍的 JSON 相比...
    99+
    2023-05-14
    Go语言XML文件读写 Go语言XML读写
  • C#中XML操作类怎么使用
    在C#中,可以使用System.Xml命名空间中的类来操作XML。下面是一个简单的示例,演示了如何创建XML文档、添加元素、保存和读...
    99+
    2023-10-22
    C# XML
  • Java中的xml文件怎么利用正则表达式进行解析
    这篇文章将为大家详细讲解有关Java中的xml文件怎么利用正则表达式进行解析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、编写Node类Node对象是文档解析的基础,最终可以通过对象的不...
    99+
    2023-05-31
    java 正则表达式 xml
  • 利用HDFS怎么实现多文件Join操作
    本篇文章为大家展示了利用HDFS怎么实现多文件Join操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。详解HDFS多文件Join操作的实例最近在做HDFS文件处理之时,遇到了多文件Join操作,其...
    99+
    2023-05-31
    hdfs join
  • Java中Word怎么利用com进行操作
    Java中Word怎么利用com进行操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实例代码如下:import com.jacob.activeX.ActiveXComp...
    99+
    2023-05-31
    java com组件 word
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作