`
itwoody
  • 浏览: 42635 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java读取xml一些方法

阅读更多
package com.qeesoo.util;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
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.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;

import com.qeesoo.exception.NotFindFileException;
import com.qeesoo.exception.NotFindNodeException;

public class XmlUtil {

?? ?private Document doc;

?? ?private Element root;

?? ?private File configFile;
?? ?

??? public static void main(String[] args) throws Exception {
??? ??? // TODO Auto-generated method stub

??? ??? XmlUtil px = new XmlUtil("./testconf.xml");
??? ??? Node node=px.getNode("movetables");
??? ??? Node childNodes=px.getNode(node, new String[]{"source","target"}, new String[]{"qeesoo_en","qeesoo_en2"});
??? ??? NodeList nodelist=childNodes.getChildNodes();
??? ??? for(int i=0;i<nodelist.getlength();i++){<br> ??? ??? ??? Node childNode=nodelist.item(i);
??? ??? ???
??? ??? ??? if(childNode.getNodeType()==Node.ELEMENT_NODE){
??? ??? ??? ??? Node childNodeAttribute=childNode.getAttributes().getNamedItem("sourcetable");
??? ??? ??? ??? if(childNodeAttribute!=null){
??? ??? ??? ??? ??? String className=childNodeAttribute.getNodeValue();
??? ??? ??? ??? ??? System.out.println(className);
??? ??? ??? ??? }
??? ??? ??? ??? childNodeAttribute=childNode.getAttributes().getNamedItem("targettable");
??? ??? ??? ??? if(childNodeAttribute!=null){
??? ??? ??? ??? ??? String className=childNodeAttribute.getNodeValue();
??? ??? ??? ??? ??? System.out.println(className);
??? ??? ??? ??? }
??? ??? ??? }
??? ??? }
??? ???
??? ??? Node datanode=px.getNode("fields");
??? ??? NodeList nodelistd=datanode.getChildNodes();
??? ??? for(int i=0;i<nodelistd.getlength();i++){<br> ??? ??? ??? Node childNode=nodelistd.item(i);
??? ??? ??? System.out.println(px.getAttributeValue(childNode, "name"));
??? ??? }
??? ???
??? ??? px.getAttributeValue(datanode, "id");
??? ??? //px.addNode(childNodes, "xxxxx", new String[]{"param1","param2","param3"}, new String[]{"add","update","delete"});
??? ???
??? }

??? //初始化xml
???
??? public void init(String fileName) throws NotFindFileException, Exception {
??? ???
??? ??? configFile = new File(fileName);
??? ???
??? ??? if (!configFile.exists()) {
??? ??? ??? throw new NotFindFileException("Xml is not Found!");
??? ??? }
??? ???
??? ??? DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
??? ??? DocumentBuilder builder = factory.newDocumentBuilder();
??? ??? doc = builder.parse(configFile);
??? ??? doc.normalize();
??? ??? root = doc.getDocumentElement();
??? }
???
??? public XmlUtil(String fileName)throws NotFindFileException, Exception {
??? ??? this.init(fileName);
??? }
???
???
???
??? public Node getNode(String nodeName) throws NotFindNodeException{
??? ??? return this.getNode(root, nodeName);
??? }
???
???
???
??? public Node getNode(Node node,String nodeName) throws NotFindNodeException{
??? ???
??? ??? if(node==null){
??? ??? ??? throw new NotFindNodeException("Not Find this node!");
??? ??? }
??? ???
??? ??? NodeList subList = node.getChildNodes();
??? ??? String nodeValue;
??? ??? if (subList != null) {
??? ??? ??? for (int i = 0; i < subList.getLength(); i++) {
??? ??? ??? ??? Node pros = subList.item(i);
??? ??? ??? ??? if (pros.getNodeType() == Node.ELEMENT_NODE) {
??? ??? ??? ??? ??? nodeValue=pros.getNodeName();
??? ??? ??? ??? ??? if(nodeValue.equalsIgnoreCase(nodeName)){
??? ??? ??? ??? ??? ??? return pros;
??? ??? ??? ??? ??? }
??? ??? ??? ??? }
??? ??? ??? }
??? ??? }
??? ??? return null;
??? }
???
???
???
??? public Node getNode(String[] nodeAttributeNames, String[] nodeAttributeValues) throws NotFindNodeException{
??? ???
??? ??? if(nodeAttributeNames.length!=nodeAttributeValues.length){
??? ??? ??? throw new IllegalArgumentException("nodeAttributeNames's length is not equals nodeAttributeValues's length");
??? ??? }
??? ???
??? ??? return this.getNode(root, nodeAttributeNames, nodeAttributeValues);
??? }
???
???
???
??? public Node getNode(Node node,String[] nodeAttributeNames, String[] nodeAttributeValues) throws NotFindNodeException{
??? ???
??? ??? if(nodeAttributeNames.length!=nodeAttributeValues.length){
??? ??? ??? throw new IllegalArgumentException("nodeAttributeNames's length is not equals nodeAttributeValues's length");
??? ??? }
??? ???
??? ??? if(node==null){
??? ??? ??? throw new NotFindNodeException("Not Find this node!");
??? ??? }
??? ???
??? ??? NodeList subList = node.getChildNodes();
??? ??? Node tmp;
??? ??? int argumentsLength=nodeAttributeNames.length;
??? ??? String attrNodeValue;
??? ??? if (subList != null) {
??? ??? ??? for (int i = 0; i < subList.getLength(); i++) {
??? ??? ??? ??? Node pros = subList.item(i);
??? ??? ??? ??? boolean isCorrentNode=true;//判断结点是否为正确的结点
??? ??? ??? ??? if (pros.getNodeType() == Node.ELEMENT_NODE) {
??? ??? ??? ??? ??? for(int j=0;j<argumentslength;j++){<br> ??? ??? ??? ??? ??? ??? tmp = pros.getAttributes().getNamedItem(nodeAttributeNames[j]);
??? ??? ??? ??? ??? ??? if(tmp!=null){
??? ??? ??? ??? ??? ??? ??? attrNodeValue=tmp.getNodeValue();
??? ??? ??? ??? ??? ??? ??? if (nodeAttributeValues[j].equalsIgnoreCase(attrNodeValue)) {
??? ??? ??? ??? ??? ??? ??? ??? isCorrentNode&=true;
??? ??? ??? ??? ??? ??? ??? }else{
??? ??? ??? ??? ??? ??? ??? ??? isCorrentNode&=false;
??? ??? ??? ??? ??? ??? ??? }
??? ??? ??? ??? ??? ??? }else{
??? ??? ??? ??? ??? ??? ??? isCorrentNode&=false;
??? ??? ??? ??? ??? ??? }
??? ??? ??? ??? ??? }
??? ??? ??? ??? ??? if(isCorrentNode){
??? ??? ??? ??? ??? ??? return pros;
??? ??? ??? ??? ??? }
??? ??? ??? ??? }
??? ??? ??? }
??? ??? }
??? ??? return null;
??? }
???
???
???
??? public void addNode(Node node,String childNodeName,String childNodeValue) throws Exception {
??? ???
??? ??? if(node==null){
??? ??? ??? throw new NotFindNodeException("Not Find this node!");
??? ??? }
??? ???
??? ??? Text textChildNodeValue = doc.createTextNode(childNodeValue);
??? ??? Element elementChildNode =doc.createElement(childNodeName);
??? ??? elementChildNode.appendChild(textChildNodeValue);
??? ??? node.appendChild(elementChildNode);
??? ??? this.writeInputFile();
??? ???
??? }
???
???
???
??? public void addNode(Node node,String childNodeName,String[] childNodeAttributeKeys,String[] childNodeAttributeValues) throws Exception {
??? ???
??? ??? Element elementChildNode =doc.createElement(childNodeName);
??? ???
??? ??? if(childNodeAttributeKeys.length!=childNodeAttributeValues.length){
??? ??? ??? throw new IllegalArgumentException("childNodeAttributeKeys's length is not equals childNodeAttributeValues's length");
??? ??? }
??? ???
??? ??? if(node==null){
??? ??? ??? throw new NotFindNodeException("Not Find this node!");
??? ??? }
??? ???
??? ??? for(int i=0;i<childnodeattributekeys.length;i++){<br> ??? ??? ???
??? ??? ??? Attr attribute=doc.createAttribute(childNodeAttributeKeys[i]);
??? ??? ??? Text attributeValue=doc.createTextNode(childNodeAttributeValues[i]);
??? ??? ??? attribute.appendChild(attributeValue);
??? ??? ??? elementChildNode.setAttributeNode(attribute);
??? ??? ???
??? ??? }
??? ???
??? ??? node.appendChild(elementChildNode);
??? ??? this.writeInputFile();
??? }
???
???

??? private void writeInputFile() throws Exception {
??? ??? TransformerFactory tFactory = TransformerFactory.newInstance();
??? ??? Transformer transformer = tFactory.newTransformer();
??? ??? //transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312");
??? ??? transformer.setOutputProperty(OutputKeys.INDENT,"yes");
??? ??? transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS,"yes");
??? ??? //设置写入文件的格式
??? ??? transformer.setOutputProperty(OutputKeys.METHOD,"xml");
??? ??? DOMSource source = new DOMSource(doc);
??? ??? StreamResult result = new StreamResult(configFile);
??? ??? transformer.transform(source, result);
??? }
???
???
???
??? public String getAttributeValue(Node node,String attributeKey) {???
??? ??? if(node==null){
??? ??? ??? return "";
??? ??? }
??? ???
??? ??? if(node.getNodeType()==Node.ELEMENT_NODE){???
??? ??? ??? Node attributeNode=node.getAttributes().getNamedItem(attributeKey);
??? ??? ??? if(attributeNode!=null){
??? ??? ??? ??? return attributeNode.getNodeValue();
??? ??? ??? }
??? ??? }
??? ???
??? ??? return "";
??? }
???
???
???
??? public String getNodeValue(Node node) {???
??? ??? if(node==null){
??? ??? ??? return "";
??? ??? }
??? ???
??? ??? if(node.getNodeType()==Node.ELEMENT_NODE){???
??? ??? ??? return node.getFirstChild().getNodeValue();
??? ??? }
??? ???
??? ??? return "";
??? }

}
?
分享到:
评论

相关推荐

    Java读写xml,word,xml文件(防乱码)

    ### Java读写XML、Word与TXT文件:去除乱码问题详解 #### 一、引言 在实际开发过程中,我们经常需要处理各种类型的文件,包括XML、Word文档以及普通的文本文件(如TXT)。这些文件在读写过程中经常会遇到乱码问题,...

    用java读取xml文件的四种方法

    要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...

    用java读取修改xml文件的代码实现

    本文将详细介绍如何使用Java来读取和修改XML文件,主要涉及以下几个核心知识点: 1. **DOM解析器**: Document Object Model(DOM)是一种将XML文档转换为内存中的树形结构的方法,使得可以遍历和修改XML文件。...

    java读取xml文件

    Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...

    java读写xml文件

    ### Java读写XML文件知识点详解 #### 一、概述 在Java编程中,对XML文件进行读取与写入是一项非常常见的任务。XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来...

    java读写xml文件的方法

    ### Java读写XML文件的方法详解 #### 一、概述 在Java编程中,XML(Extensible Markup Language,可扩展标记语言)是一种广泛使用的数据交换格式。由于其良好的跨平台特性和自描述性,使得XML成为了许多应用程序...

    java解析xml字符串

    这包括了如何将XML字符串转换为可读写的数据结构,以及如何遍历、读取和修改XML文档的元素和属性。这对于在Java应用程序中处理动态生成或外部提供的XML数据非常有用。掌握这一技能,开发者能够更有效地集成XML数据...

    Java读写xml java 读写xml文件操作, 简单易懂

    Java提供了多种读写XML文件的方法,包括SAX、DOM、StAX以及JAXB等。本文将基于提供的文件信息,深入探讨如何利用Java进行XML文件的读取与写入,重点介绍DOM(Document Object Model)方式的操作。 #### DOM解析XML...

    使用Java读取XML配置文件

    使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 XML 在电子商务中的数据交换的作用。但是在平时系统开发中,我们不一定都用到数据交换,是否无法使用 XML?当然不是...

    java读取XMl数据

    以上就是Java读取XML数据的主要方法。选择哪种方式取决于具体的需求,如处理大型XML文件时,SAX和StAX更为高效;而如果需要频繁查询和修改XML结构,DOM和DOM相关的库可能更适合。在实际开发中,可以根据项目规模、...

    Java读取xml文件的四种方法.doc

    Java 读取 XML 文件的四种方法 在 Java 中读取 XML 文件有多种方法,本文将介绍四种常见的方法,分别使用 DOM、DOM4J、JDOM 和 SAX 解析器。 第一种方法:使用 DOM DOM(Document Object Model)是一种树形结构,...

    Xml.zip_JAVA读取xml_XML读取_java_saxreader

    Java作为一种强大的编程语言,提供了多种方式来读取和操作XML文档,其中包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。本教程将重点介绍如何使用SAXReader在Java中...

    java读取xml文件并存入数据库

    java从xml中读入数据并存入到sqlserver2005数据库中

    java 解析xml 多级

    总结来说,Java提供了多种解析XML的方法,包括DOM、SAX和JAXB等。对于处理多级嵌套的XML,DOM和JAXB在操作上更为便捷,而SAX则适用于处理大规模文件。在具体选择时,应根据项目需求和资源限制进行权衡。

    java读取XML内容源代码

    以上四种方法都是Java中读取XML文件的常见途径,每种方法有其适用的场景和优缺点。在实际开发中,应根据项目需求选择合适的方法。如果你的项目中包含名为"FlashDemo"的文件或资源,可能涉及到与XML文件交互的示例...

    java 读取xml文件生成树形图

    在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...

    java写XML文件和读取XML文件

    二、Java读取XML文件 1. 使用DOM解析: 读取XML文件时,首先会将整个XML文档加载到内存中的DOM树,然后通过API遍历和访问各个节点。 示例代码: ```java import javax.xml.parsers.DocumentBuilder; import javax....

    java中读写XML文件

    在Java编程语言中,XML(eXtensible Markup Language)是一种重要的数据交换格式,用于存储和...在提供的"在java中读写XML文件.ppt"和"源码"中,可能包含了更多详细的步骤和示例代码,可以帮助你进一步理解这个主题。

Global site tag (gtag.js) - Google Analytics