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与TXT文件:去除乱码问题详解 #### 一、引言 在实际开发过程中,我们经常需要处理各种类型的文件,包括XML、Word文档以及普通的文本文件(如TXT)。这些文件在读写过程中经常会遇到乱码问题,...
要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...
本文将详细介绍如何使用Java来读取和修改XML文件,主要涉及以下几个核心知识点: 1. **DOM解析器**: Document Object Model(DOM)是一种将XML文档转换为内存中的树形结构的方法,使得可以遍历和修改XML文件。...
Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...
### Java读写XML文件知识点详解 #### 一、概述 在Java编程中,对XML文件进行读取与写入是一项非常常见的任务。XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来...
### Java读写XML文件的方法详解 #### 一、概述 在Java编程中,XML(Extensible Markup Language,可扩展标记语言)是一种广泛使用的数据交换格式。由于其良好的跨平台特性和自描述性,使得XML成为了许多应用程序...
这包括了如何将XML字符串转换为可读写的数据结构,以及如何遍历、读取和修改XML文档的元素和属性。这对于在Java应用程序中处理动态生成或外部提供的XML数据非常有用。掌握这一技能,开发者能够更有效地集成XML数据...
Java提供了多种读写XML文件的方法,包括SAX、DOM、StAX以及JAXB等。本文将基于提供的文件信息,深入探讨如何利用Java进行XML文件的读取与写入,重点介绍DOM(Document Object Model)方式的操作。 #### DOM解析XML...
使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 XML 在电子商务中的数据交换的作用。但是在平时系统开发中,我们不一定都用到数据交换,是否无法使用 XML?当然不是...
以上就是Java读取XML数据的主要方法。选择哪种方式取决于具体的需求,如处理大型XML文件时,SAX和StAX更为高效;而如果需要频繁查询和修改XML结构,DOM和DOM相关的库可能更适合。在实际开发中,可以根据项目规模、...
Java 读取 XML 文件的四种方法 在 Java 中读取 XML 文件有多种方法,本文将介绍四种常见的方法,分别使用 DOM、DOM4J、JDOM 和 SAX 解析器。 第一种方法:使用 DOM DOM(Document Object Model)是一种树形结构,...
Java作为一种强大的编程语言,提供了多种方式来读取和操作XML文档,其中包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。本教程将重点介绍如何使用SAXReader在Java中...
java从xml中读入数据并存入到sqlserver2005数据库中
总结来说,Java提供了多种解析XML的方法,包括DOM、SAX和JAXB等。对于处理多级嵌套的XML,DOM和JAXB在操作上更为便捷,而SAX则适用于处理大规模文件。在具体选择时,应根据项目需求和资源限制进行权衡。
以上四种方法都是Java中读取XML文件的常见途径,每种方法有其适用的场景和优缺点。在实际开发中,应根据项目需求选择合适的方法。如果你的项目中包含名为"FlashDemo"的文件或资源,可能涉及到与XML文件交互的示例...
在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...
二、Java读取XML文件 1. 使用DOM解析: 读取XML文件时,首先会将整个XML文档加载到内存中的DOM树,然后通过API遍历和访问各个节点。 示例代码: ```java import javax.xml.parsers.DocumentBuilder; import javax....
在Java编程语言中,XML(eXtensible Markup Language)是一种重要的数据交换格式,用于存储和...在提供的"在java中读写XML文件.ppt"和"源码"中,可能包含了更多详细的步骤和示例代码,可以帮助你进一步理解这个主题。