- 浏览: 556823 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (144)
- struts (1)
- 数据库 (13)
- Ext (4)
- mysql (10)
- PHP (2)
- informix (1)
- js (9)
- java (41)
- struts2 (9)
- wap (2)
- 浏览器 (2)
- hibernate (1)
- android (19)
- ibatis (2)
- css (1)
- 上传 html (1)
- kindeditor (1)
- sql service (2)
- spring (7)
- xml (1)
- oracle (1)
- log4j (2)
- 日期 (2)
- swing (5)
- jquery (4)
- eclipse (4)
- Maven (1)
- BUG (5)
最新评论
-
msdghs:
LZ你好,看了你的文章略有所获,但是里面的一些机制不是很明白, ...
spring quartz集群配置 -
linksky1018:
是我弄错啦,我忘了进行url解码了
java 汉字转Unicode -
linksky1018:
纯汉字转换还行
java 汉字转Unicode -
linksky1018:
貌似有问题吧
java 汉字转Unicode -
kizz:
谢谢您,帮了大忙
struts2 上传 验证图片大小 长宽
xml文件
Jdom解析代码
dom4j
<?xml version="1.0" encoding="UTF-8"?> <root> <person id="1"> <username>张三</username> <password>123123</password> </person> <person id="2"> <username>1111111112</username> <password>password2</password> </person> </root>
Jdom解析代码
String xmlpath="test.xml"; SAXBuilder builder=new SAXBuilder(false); try { //构造文档 Document doc=builder.build(Sample.class.getClassLoader().getResourceAsStream(xmlpath)); Element root=doc.getRootElement();//获得根元素 List<Element> rootlist=root.getChildren("person");//获得名为person的标签 for (Iterator<Element> iterator = rootlist.iterator(); iterator.hasNext();){ Element element=(Element)iterator.next(); String id=element.getAttributeValue("id"); String username=element.getChildText("username");//取得标签的子元素 String password=element.getChildText("password"); System.out.println("ID:"+id+" 用户名:"+username+" 密码:"+password); } } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
dom4j
//指定xml文件名称及地址,存在在项目根目录 private static String xmlPath = "pr.xml"; /** * 通过xml地址获得document * @param xmlPath * @return */ public static Document parse2Document(String xmlPath) { SAXReader reader = new SAXReader(); Document document = null; try { InputStream in = new FileInputStream(xmlPath); document = reader.read(in); return document; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 读取解析XML * * @param map */ public static void readXmlOut(Map<String, Object> map) { // 产生一个解析器对象 SAXReader reader = new SAXReader(); // 将xml文档转换为Document的对象 Document document = parse2Document(xmlPath); // 获取文档的根元素 Element root = document.getRootElement(); // 遍历当前元素(在此是根元素)的子元素 Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Entry entry = (Entry) it.next(); String name = entry.getKey().toString(); String value = null; for (Iterator<Element> i_pe = root.elementIterator(); i_pe.hasNext();) { Element element = i_pe.next(); if (map.get("root").equals(element.getName())) { value = element.elementText(name); } } if (!"root".equals(name)) { map.put(name, value); } } } /** * 修改xml节点信息 map root 代表根节点 其它要与要修改根节点下的节点名称相同 * * @param newValue */ public void updateXml(Map newValue) { Document doc = parse2Document(xmlPath); // 获得要修改的节点信息 List<Element> nameList = doc.selectNodes("/root/" + newValue.get("root")); Iterator<Element> iterator = nameList.iterator(); // 便利获得的节点信息 其中包含root 和 newValue.get("root")两个节点 while (iterator.hasNext()) { Element element = iterator.next(); // 判断便利的名称是否与输入的Map中的root信息相同 if (newValue.get("root").equals(element.getName())) { // 获得该节点的子节点 List<Element> childList = element.elements(); // 便利子节点 for (int i = 0; i < childList.size(); i++) { // 遍历Map信息 Iterator<Element> valueSet = newValue.entrySet().iterator(); while (valueSet.hasNext()) { Entry<String, Object> entry = (Entry<String, Object>) valueSet.next(); String nodeName = childList.get(i) .getName(); String key = entry.getKey().toString(); // 判断key是否与节点名称相同 // 相同则进行修改节点信息 if (key != null && key.equals(nodeName)) { childList.get(i).setText((String) entry .getValue()); } } } } } writeToFile(doc); } /** * 写文档 * @param doc */ public void writeToFile(Document doc) { try { Writer writer = new FileWriter(xmlPath); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter xmlWriter = new XMLWriter(writer, format); xmlWriter.write(doc); xmlWriter.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 创建XML文件 * * @param map */ public void createXML(Map<String, Object> map) { Document document = null; // 建立document对象 try { // 判断xml是否存在 document = DocumentHelper.createDocument(); // 创建根节点 Element root = document.addElement("root"); // 由map中取出根节点,创建所需要的根节点 Element request = root.addElement(map.get("root").toString()); // 添加子节点 // 遍历map Iterator<Entry<String, Object>> valueSet = map.entrySet().iterator(); while (valueSet.hasNext()) { Entry<String, Object> entry = valueSet.next(); // 排除根节点 if (!"root".equals(entry.getKey())) { Element node = request.addElement(entry.getKey()); node.addText((String) entry.getValue()); } } // 输出数据到编辑器中 OutputFormat format = OutputFormat.createPrettyPrint(); // 设置文档编码 format.setEncoding("utf-8"); // 根据需要设置编码 XMLWriter writer = new XMLWriter(System.out, format); document.normalize(); writer.write(document); writer.close(); // 保存XML到文件 XMLWriter writer2 = new XMLWriter( new FileWriter(new File(xmlPath)), format); writer2.write(document); // 输出到文件 writer2.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 添加修改节点 * @param map * @return */ public String updAndAddXML(Map<String, Object> map) { try { //获得文档 Document xmlDoc = parse2Document(xmlPath); //获得根节点 Element root = xmlDoc.getRootElement(); //从根节点开始读取 Iterator<Element> it = root.elementIterator(); boolean flag=false; while (it.hasNext()) { Element element = it.next(); //判断是否与提交的根节点相同 if(map.get("root").equals(element.getName())){ //添加修改节点 this.nodesUpdAndAddXml(element, map); flag=true; } } //防止root下的map中的root元素不存在 无法对节点进行修改或者添加 if(!flag){ //判断map中的root节点是否存在 Element request=root.addElement(map.get("root").toString()); //添加修改子节点 this.nodesUpdAndAddXml(request, map); } // 输出全部原始数据,在编译器中显示 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(System.out, format); writer.write(xmlDoc); writer.close(); // 输出全部原始数据,并用它生成新的我们需要的XML文件 XMLWriter writer2 = new XMLWriter(new FileWriter(new File( xmlPath)), format); writer2.write(xmlDoc); // 输出到文件 writer2.close(); } catch (IOException e) { e.printStackTrace(); } return xmlPath; } /** * 添加 修改子节点 * @param element节点 * @param map */ public void nodesUpdAndAddXml(Element element,Map<String, Object> map){ //获得要修改的节点下的所有子节点 List<Element> childList = element.elements(); //便利map Iterator<Entry<String, Object>> valueSet = map.entrySet().iterator(); while(valueSet.hasNext()){ Entry<String, Object> entry = valueSet.next(); String key = entry.getKey().toString(); //排除map中的root元素 if(!"root".equals(key)){ //设置boolean值 用于节点是否存在 boolean flag=false; for (Element child : childList) { String nodeName = child.getName(); //判断key与节点的名称是否相同 if(key!=null && key.equals(nodeName)){ child.setText(entry.getValue().toString()); flag=true; } } //节点不存在 需要添加 if(!flag){ //添加节点 Element new_cdata=element.addElement(key); new_cdata.setText(entry.getValue().toString()); } } } } public static void main(String[] args) { // readXmlOut(map); // Iterator it = map.entrySet().iterator(); // while (it.hasNext()) { // Entry entry = (Entry) it.next(); // System.out.println(map.get(entry.getKey()) + "-------" // + entry.getKey()); // } // updXmlNode(); // delXml(); // new dom4jParse().updateXml(map); Map<String, Object> map = new HashMap<String, Object>(); map.put("root", "jdk"); map.put("type", "123---------"); map.put("path", "321----------"); map.put("url","这是一个新的"); new dom4jParse().updAndAddXML(map); }
- jdom.jar (149.7 KB)
- 下载次数: 0
发表评论
-
不同版本的web.xml配置
2016-07-12 10:33 1093web.xml v2.3 <?xml version ... -
在线裁剪图片 Jcrop
2016-01-30 10:49 1599Jcrop 是一个功能强大的 jQuery 图像裁剪插件,结合 ... -
java.lang.OutOfMemoryError: PermGen space
2014-12-12 15:24 753解决办法增大tomcat JVM内存设置 参数说明: -Xm ... -
struts2的iterator标签遍历HashMap
2014-11-17 10:56 772hashmap中保存的是string,object,objec ... -
java session统计在线人数
2014-11-17 09:00 1002首先创建监听器,监听器实现ServletContextAttr ... -
Log4j写入数据库详解
2014-09-04 16:10 852log4j是一个优秀的开源日志记录项目,我们不仅可以对输出 ... -
将jar文件打包成exe安装文件(三)
2014-08-13 09:43 922通过前两篇 将jar文件打包成exe安装文件(一) ... -
将jar文件打包成exe安装文件(二)
2014-08-13 09:34 1095在上一篇中《将jar文件打包成exe安装文件(一)》介绍了,如 ... -
将jar文件打包成exe安装文件(一)
2014-08-13 09:26 1595将java项目打成exe可运 ... -
如何用java jdbc 向数据库表插入大数据量
2013-11-26 17:17 2043jvm:-Xmx1024m size = 1000000,可以 ... -
java获得当前时间一小时前的时间
2013-10-29 15:30 3486Calendar calendar = Calendar. ... -
log4j 日志输出至数据库
2013-10-28 11:19 20241、首先配置log4j ### set log leve ... -
使用Dom4j合并多个xml文件
2013-09-25 16:55 4933SAXReader saxReader = new SAX ... -
Java利用Ibatis的ScriptRunner解析sql
2013-09-11 13:28 5474需要导入mybatis-3.0.5.jar包 java直接解析 ... -
java 解析sql脚本
2013-08-29 14:27 1583java执行sql脚本,一种是解析sql脚本,生成每一条sql ... -
Spring 泛型 反射调用方法
2013-08-26 14:52 1700Object cz=springUtil.getBean( ... -
spring中使用ApplicationContext
2013-08-26 14:47 1061声明一个SpringUtil,并且实现ApplicationC ... -
Java中如何获得所有实现该接口的子类
2013-08-26 09:58 2937public static List<Class&g ... -
Java urlrewriter 第一节 初识urlrewriter
2013-08-01 09:54 919urlrewrite顾名思义,就是对URL进行重写,用户得到的 ... -
java 修改 读取properties文件
2013-07-25 14:04 1420/** * 根据key获取prpperties中的某 ...
相关推荐
《JDOM:XML解析的利器》 XML,全称可扩展标记语言(eXtensible Markup Language),是一种用于存储和传输数据的标记语言,广泛应用于数据交换、配置文件、文档结构化等领域。2000年,随着互联网的快速发展,XML的...
java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...
标题中的“PB 解析XML”指的是使用PowerBuilder(简称PB)这一编程工具处理XML数据的过程。PowerBuilder是一款广泛用于开发企业级应用的可视化编程环境,它支持多种数据格式,包括XML。XML(eXtensible Markup ...
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
在本文中,我们将深入探讨如何在STM32F107上使用minixml库解析XML(可扩展标记语言)文档,这对于那些初次尝试在嵌入式环境中处理XML数据的开发者来说,是非常有价值的。 XML是一种通用的数据交换格式,它允许结构...
本文将深入探讨如何使用C++来解析XML文件,主要围绕“C++实现对xml文件的解析”这一主题展开。 XML文件通常包含一系列元素,每个元素都有开始标签、结束标签和可能的属性。C++中解析XML文件的方法多种多样,这里...
标题中的“PB解析XML字符串 把XML 变为数据窗口”指的是使用PowerBuilder(PB)这一编程工具,处理XML格式的数据,并将其转换成数据窗口对象的过程。数据窗口是PowerBuilder中的一个核心组件,用于显示、编辑和管理...
易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...
在本项目"STM32解析XML完整工程.zip"中,重点是实现STM32利用软件资源处理XML(eXtensible Markup Language)文件。XML是一种用于标记数据的标准格式,常用于存储和传输结构化数据,例如配置文件、设备通信协议等。 ...
Delphi是一款强大的Object Pascal编程环境,它提供了丰富的库和工具来处理XML数据,包括解析、创建和操作XML文档。本实例将详细探讨如何在Delphi 7中解析XML文件。 首先,我们需要引入必要的单元,如`Classes`和`...
Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...
然而,由于资源限制,STM32往往没有内置专门用于XML解析的硬件模块,因此需要软件库来处理XML文件。在这种背景下,ezxml库应运而生。 ezxml库是一个轻量级的C语言XML解析库,设计用于嵌入式环境,包括STM32这类微...
这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子节点,并且希望将其解析为字符串时,JAXB提供了一种有效的方法。 首先,我们需要理解XML文档的基本结构。XML是一种可...
1. 创建`SAXBuilder`对象,这是JDOM提供的用于解析XML文档的类。 2. 使用`SAXBuilder`的`build`方法读取XML文件,返回一个`Document`对象。 3. 通过`Document`对象访问XML文档的根元素和其他元素。 以下是一个简单...
资源名称:使用Javascript解析xml文件或xml格式字符串 中文WORD版 内容简介: 本文档主要讲述的是使用Javascript解析xml文件或xml格式字符串;javascript中,不论是解析xml文件,...
这个例子展示了如何在PowerBuilder 12.5中解析XML文件,特别是获取指定路径下的节点内容和属性值。XML(Extensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用于数据交换、配置文件等场景。 ...
纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 ...
XML解析器在读取XML文档时会自动处理特殊字符。如果解析器发现未转义的特殊字符,它会抛出错误,因为这可能表示XML文档格式不正确。确保正确编码特殊字符是防止解析错误的关键。 **4. CDATA区** 除了实体引用,XML...