`
kkllmey
  • 浏览: 103409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

xml

阅读更多

package com.test;

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) throws Exception {
  // TODO Auto-generated method stub
  String fileName = "E:\\persons.xml";
  newFile(fileName);
  readerAndEdit(fileName);
 }
 //新建一个文档
 public static void newFile(String fileName){
  Document doc = DocumentHelper.createDocument();
  Element persons = doc.addElement("persons");
  persons.addComment("这是xml的注释");
  Element person1 = persons.addElement("person");
  person1.addAttribute("sex", "男");
  
  Element name1 = person1.addElement("name");
  name1.setText("张三");
  Element age1 =person1.addElement("age");
  age1.setText("22");
  
  try{
   OutputFormat fmt = OutputFormat.createPrettyPrint();//IE :   可以不加
   fmt.setEncoding("GBK");        //支持中文 :  可以不加
   XMLWriter writer = new XMLWriter(new FileWriter(new File(fileName)),fmt); //或者 :  new XMLWriter(new FileWriter(new File(fileName)))
   writer.write(doc);
   writer.close();
  }catch(Exception ex){
   ex.printStackTrace();
  }
 }
 //读文档进行修改
 public static void readerAndEdit(String fileName) throws Exception{
  SAXReader reader = new SAXReader();
  Document doc = reader.read(new File(fileName));
  List<Attribute> attList = doc.selectNodes("/persons/person/@sex ");
  //修改性别
  for(Attribute att : attList){
   if("男".equals(att.getValue())){
    att.setValue("女");
   }
  }
  List<Element> personList = doc.selectNodes("/persons/person");
  //添加元素
  for(Element person : personList){
   Element address = person.addElement("address");
   address.setText("北京");
  }
  //删除元素
  List<Element> list = doc.selectNodes("/persons/person");
  for(Element person : list){
   Iterator<Element> addList = person.elementIterator("address");
   while(addList.hasNext()){
    person.remove(addList.next());
   }
  }
  
  OutputFormat fmt = OutputFormat.createPrettyPrint();
  fmt.setEncoding("GBK");
  XMLWriter writer = new XMLWriter(new FileWriter(new File(fileName)),fmt);
  writer.write(doc);
  writer.close();
  
 }

}

-------------------------------------BaseRead 类

package cn.com.cncsi.product.ttms.common.distribute.parsexml;


import java.io.File;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.List;

import junit.framework.TestCase;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.sun.org.apache.bcel.internal.generic.GOTO;


/**
 * 解析XML的基类
 *
 */
public abstract class BaseRead  {
 
 /**
  * 可以得到头部信息<Head>,以键值对的形式存储
  */
 protected  HashMap<String, String> headMP = new HashMap<String, String>();
 
 /**
  * 将List集合传成String时的分隔符
  */
 protected  String split = ";";
 
 /**
  * 根据文件名解析文件
  * 例: C:\\web.xml
  */
 protected  Document testRead(String fileName){
  try{
   SAXReader reader = new SAXReader();
   Document doc = reader.read(new File(fileName));
   initHead(doc);
   return doc;
  }catch(Exception ex){
   System.out.println("读取文件初始化头部Head错误");
//   ex.printStackTrace();
  }
  return null;
 }
 
 /**
  * 传入xml格式的字符串进行解析
  * @param data
  * @return
  */
 protected  Document readByString(String data){
  try{
   Document doc = DocumentHelper.parseText(data);
   initHead(doc);
   return doc;
  }catch(Exception ex){
   System.out.println("解析数据初始化头部Head错误");
//   ex.printStackTrace();
  }
  return null;
 }
 
 /**
  * 初始化所有xml的头部信息,并存入HashMap属性中.
  * @param doc
  */
 private  void initHead(Document doc){
  //读取head
  List<Element> headElementList = doc.selectNodes("/ServiceContext/Head/property");
  for(Element el : headElementList){
   headMP.put(el.attributeValue("name"),el.attributeValue("value"));
  }
 }
 
 /**
  * 返回一个HashMap,用于保存xml文件的问信息(Head)
  * @return
  */
 public  HashMap getHeadMP(){
  return headMP;
 }
 
 /**
  * 传入节点.将节点的值转换成Double类型
  */
 protected  double toDouble(Element e){
  String temp = e.attributeValue("value");
  try{
   return Double.parseDouble(temp);
  }catch(Exception ex){
   System.out.println("转换Double类型出错");
//   ex.printStackTrace();
  }
  return 0;
 }
 
 /**
  * 传入节点.将节点的值转换成Timestamp类型
  */
 protected  Timestamp toTime(Element e){
  String temp = e.attributeValue("value");
  try{
   return Timestamp.valueOf(temp);
  }catch(Exception ex){
   System.out.println("转换Timestamp类型出错");
//   ex.printStackTrace();
   
  }
  return Timestamp.valueOf("2008-08-08 12:12:12");
 }
 
 /**
  * 传入节点.将节点的值转换成long类型
  */
 protected  long toLong(Element e){
  String temp = e.attributeValue("value");
  try{
   return Long.parseLong(temp);
  }catch(Exception ex){
   System.out.println("转换long类型出错");
//   ex.printStackTrace();
  }
  return 0;
 }
 /**
  * 传入节点.将节点的值转换成int类型
  */
 protected  int toInt(Element e){
  String temp = e.attributeValue("value");
  try{
   return Integer.parseInt(temp);
  }catch(Exception ex){
   System.out.println("转换long类型出错");
//   ex.printStackTrace();
  }
  return 0;
 }
 /**
  * 传入节点.将节点的值转换成String类型
  */
 protected  String toValue(Element e){
  return  e.attributeValue("value");
 }
 /**
  * 传入节点.得到节点的name属性的值
  */
 protected  String toName(Element e){
  return e.attributeValue("name");
 }
}

-----------------解析XML的类  extends BaseRead

Document doc = readByString(data); //data:xml格式的字符串
Element  tTCommonOpElement = (Element) doc.selectNodes("/ServiceContext/TTCommonOp").get(0);
       
        String nodeName;
        String nameValue;
        for(Element element : (List<Element>)tTCommonOpElement.elements()){
            nodeName = element.getName();
            nameValue = toName(element);
            if("TT_Code".equalsIgnoreCase(nameValue)){
                 
            }else if("Operation".equalsIgnoreCase(nodeName)){
                List<Element> opElement = element.elements();
                String opNodeName ;
                String opNameValue ;
                for(Element el : opElement){
                    opNodeName = el.getName();
                    opNameValue = toName(el);
                    if("Operation_Id".equalsIgnoreCase(opNameValue)){

                    }else if("Operation_Name".equalsIgnoreCase(opNameValue)){
                       
                    }else if("Operator".equalsIgnoreCase(opNodeName)){
                        List<Element> list =  el.elements();
                        String orNameValue ;
                        for(Element e: list){
                            String eNameValue = e.attributeValue("name");
                       
                            if("User_Id".equalsIgnoreCase(eNameValue)){
                   
                            }else if("User_Name".equalsIgnoreCase(eNameValue)){
                               
                            }else if("Zone_Code".equalsIgnoreCase(eNameValue)){
                           
                            }
                        }
                       
                    }else if("Operator_Dept".equalsIgnoreCase(opNodeName)){
                        List<Element> list = el.elements();
                        for(Element e : list){
                            String eNameValue = e.attributeValue("name");
                            if("Dept_Id".equalsIgnoreCase(eNameValue)){
                           
                            }else if("Dept_Name".equalsIgnoreCase(eNameValue)){
                               
                            }
                        }
                    }
                }
            }
        }

分享到:
评论

相关推荐

    pugixml读写XML示例

    pugixml是一款轻量级、高性能的C++库,专为XML解析和操作而设计。这个库由Artemev开发,提供了简单易用的API,使得在C++项目中处理XML文档变得非常便捷。本示例将详细介绍如何使用pugixml进行XML的读取和写入操作。 ...

    pb下读写xml文件的例子.rar_pb_pb 读取xml_pb 读取xml文件_pb9 xml_pb下读写xml文件的例子

    在PowerBuilder(简称PB)这个强大的开发环境中,处理XML文件是一项常见的任务。XML(Extensible Markup Language)是一种用于存储和传输数据的通用格式,尤其在跨平台和网络应用中广泛使用。本示例主要探讨如何在...

    tinyxml与tinyxml2

    TinyXML和TinyXML2是两个小型的开源库,专门用于解析和操作XML(eXtensible Markup Language)文档。这两个库都是用C++编写的,为C++开发者提供了方便的接口来读取、写入和操作XML数据。下面将详细介绍这两个库的...

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...

    andxml xml解密工具

    andxml汉化版是一个xml文件反编译工具,可与APKTOOL反编译配合使用,APK文件使用APKTool反编译生成XML文件后,就可以直接通过它进行汉化编辑 注意: 1、一键机器翻译会造成某些代码出现翻译错误现象,请人工识别。...

    XML解析工具- TinyXML2 -源代码 - C++

    TinyXML-2 是一个简单、小型、高效的 C++ XML 解析器,可以被轻松集成到其他程序中。它使用文档对象模型(DOM)的方式解析XML,可解析 XML 文档,并根据该文档构建可读取、修改和保存的文档对象模型。 作为XML解析...

    pugixml 一个很好用的XML类

    **Pugixml详解:一个高效易用的XML解析库** 在编程中,XML(Extensible Markup Language)是一种被广泛使用的数据交换格式,特别是在跨平台通信、配置文件和数据存储等领域。为了处理XML文档,开发者通常需要依赖...

    xml2axml反编译AndroidManafest文件

    使用java工具xml2axml.jar反编译AndroidManafest文件 通过xml2axml.jar工具反编译AndroidManafest文件 还原AndroidManafest.xml详细过程: 1、获取到apk 2、解压获取里面的AndroidManifest.xml文件 3、在xml2axml....

    DBMS_XMLDOM DBMS_XMLPARSER DBMS_XMLQUERY 文档

    Oracle数据库系统提供了强大的XML处理能力,这主要体现在其内置的几个PL/SQL包上,如DBMS_XMLDOM、DBMS_XMLPARSER和DBMS_XMLQUERY。这些包为开发者提供了处理XML文档的一整套工具,使得在数据库环境中进行XML数据的...

    Xml完全操作 XML增删改查

    XML(eXtensible Markup Language)是一种用于标记数据的语言,其设计目的是传输和存储数据,而非显示数据。在IT行业中,XML因其结构清晰、可扩展性强的特点,被广泛应用于数据交换、配置文件、Web服务等领域。本文...

    tinyxml2.h tinyxml2.cpp文件

    TinyXML-2,通常以tinyxml2库的形式存在,是一个轻量级的C++库,专门用于解析和操作XML文档。这个库由李·斯坦普(Lee Stemp)开发,设计简洁,易于集成到各种项目中,特别是对于嵌入式系统和资源有限的环境。在给定...

    Qt读写Xml文件,QTreeWidget显示Xml和导出Xml文件

    在Qt框架中,XML文件是一种常见的数据存储格式,它提供了结构化的数据表示方式,便于程序读取和写入。QTreeWidget是Qt提供的一种用于显示树状结构数据的控件,它可以很好地展示XML文件的层次结构。QXml是Qt中的XML...

    tinyxml2解析和创建xml样例

    TinyXML2是一个小型、快速且易于使用的C++库,用于解析和生成XML文档。这个库的设计目标是简单、高效,并且适用于嵌入式系统。在本文中,我们将深入探讨如何使用TinyXML2来解析和创建XML文件,特别是涉及到CDATA区段...

    xml转javaBean,javaBean转xml,xml标签大小写问题,以及对xml特殊符号的处理

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在软件开发、Web服务、配置文件等领域。本文将深入探讨XML与JavaBean之间的转换、XML标签的大小写规则、XML特殊符号的处理以及CDATA的生成。 ...

    基于tinyxml2的xml操作库再封装

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换、文档存储等领域。TinyXML2是轻量级的C++ XML解析库,它提供了简单、直接的方式来读写XML文档。本项目是基于tinyxml2...

    根据xml schema生成xml

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。XML Schema(通常缩写为XSD)则是为XML文档定义结构和数据类型的规范,它允许我们对XML文档进行更严格...

    tinyxml2解析XML文件读取数据

    - 库的主要类包括`XMLDocument`(XML文档对象)、`XMLElement`(XML元素)、`XMLText`(XML文本)、`XMLComment`(XML注释)和`XMLAttribute`(XML属性)等。 2. **解析XML文件** - 使用`XMLDocument::LoadFile()...

    XMLParser(XML解析代码 C++版)

    XMLParser是一种用于解析XML文档的C++实现,它旨在提供简单、小巧且稳定的解决方案,以处理XML数据。XML,即可扩展标记语言,是用于存储和传输数据的标准格式,广泛应用于配置文件、数据交换和文档结构化等领域。XML...

    matlab读取XML,XML转换为matlab

    XML(eXtensible Markup Language)是一种用于存储和交换数据的标记语言,广泛应用于软件开发、数据存储和网络通信等领域。Matlab作为一个强大的数值计算和数据分析环境,也提供了与XML交互的功能,这主要通过XML ...

    Notepad++的XML Tools插件格式化XML文件插件

    (2) 解压Xml Tools 2.4.8 Unicode.zip,关闭Notepad++ (3) 将xmltools子文件夹下的XMLTools.dll拷贝至Notepad++的plugins子文件夹 (4) 将ext_libs子文件夹下的所有dll文件拷贝至Notepad++的根目录(与notepad++.exe...

Global site tag (gtag.js) - Google Analytics