- 浏览: 5826813 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
public class Dom4jUtil implements XmlDocument { String root="employees"; public void createXml(String fileName) { // TODO Auto-generated method stub Document document = DocumentHelper.createDocument(); Element employees=document.addElement(root);//root Element employee=employees.addElement("employee"); employee.addAttribute("title", "XML Zone"); //给employee添加title属性,并设置他的值 Element name= employee.addElement("name");name.setText("小倪"); Element sex=employee.addElement("sex");sex.setText("famale"); Element age=employee.addElement("age");age.setText("29"); try { XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(fileName)); // Writer fileWriter=new FileWriter(fileName); // XMLWriter xmlWriter=new XMLWriter(fileWriter); xmlWriter.write(document); xmlWriter.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } public void parserXml(String fileName) {//只能解析2层结构的xml(不包括根root) // TODO Auto-generated method stub File inputXml=new File(fileName); SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(inputXml); Element employees=document.getRootElement(); for(Iterator i = employees.elementIterator(); i.hasNext();){ Element employee = (Element) i.next(); for(Iterator j = employee.elementIterator(); j.hasNext();){ Element node=(Element) j.next(); System.out.println(node.getName()+":"+node.getText()); } } } catch (DocumentException e) { System.out.println(e.getMessage()); } // System.out.println("dom4j parserXml"); } public static void main(String[] args){ //System.out.println(new Util().hash("111111")); Dom4jUtil dom=new Dom4jUtil(); String fileName="C:\\t.xml"; dom.createXml(fileName); System.out.println("ok!!!"); // dom.parserXml(fileName); dom.getRoot(dom.readXML(fileName)); } //递归解析XML //用法:dom.getRoot(dom.readXML(fileName)); public Document readXML(String fileName) { Document document = null; SAXReader saxReader = new SAXReader(); try { document = saxReader.read(new File(fileName)); } catch (DocumentException e) { e.printStackTrace(); } return document; } public void getRoot(Document document) { Element root = document.getRootElement(); tree(root); } private void tree(Element element) {//递归解析xml Iterator iterator = element.elementIterator(); List list = null; while (iterator.hasNext()) { Element node = (Element) iterator.next(); list = node.elements(); if (list != null && list.size() > 0) { // System.out.print(node.getName()+"\n");//父元素 int count = node.attributeCount(); for (int i = 0; i < count; i++) { Attribute attr = node.attribute(i); System.out.println("属性" + attr.getName() + ":" + attr.getText()); } tree(node); } else { System.out.println(node.getName() + "=" + node.getText()); } } } }
出现Invalid byte 2 of 2-byte UTF-8 sequence原因:
FileWriter对象进行文件的输出是不能正确进行文件编码的原因所在,java中由Writer类继承下来的子类没有提供编码格式处理,所以dom4j也就无法对输出的文件进行正确的格式处理。这时候所保存的文件会以系统的默认编码对文件进行保存,在中文版的window下java的默认的编码为GBK,也就是所虽然我们标识了要将xml保存为utf-8格式但实际上文件是以GBK格式来保存的,所以这也就是为什么能够我们使用GBK、GB2312编码来生成xml文件能正确的被解析,而以UTF-8格式生成的文件不能被xml解析器所解析的原因。
所以我们在使用dom4j的来生成我们的XML文件时不应该直接为在构建XMLWriter时,不应该直接为其赋一个Writer对象,而应该通过一个OutputStream的子类对象来构建。也就是说在我们上面的代码中,不应该用FileWriter对象来构建xml文档,而应该使用FileOutputStream对象来构建
发表评论
-
JDK中有关23个经典设计模式
2011-09-27 22:42 2043看原文吧,清楚些: http://www.iteye.com/ ... -
java生成jar压缩包并运行
2011-07-23 19:01 3113原帖: http://ankye1234.blog.163.c ... -
Android开发之Java集合类性能分析
2011-04-02 19:46 6975对于Android开发者来说深入了解Java的集合类很有必要主 ... -
一些Java经典算法
2010-09-10 16:38 2930package com.worthtech.app.uti ... -
java给图片加上水印
2010-07-02 14:08 1959package com.langhua.ImageUtil ... -
htmlparser API
2010-07-02 14:03 13139htmlparser所有的filter htmlpar ... -
使用dom4j的xPath解析XML
2010-06-30 15:04 21085books.xml: <?xml version=&qu ... -
UUID生成随机编号(适用于数字字母混编)
2010-03-10 16:35 7182UUID(Universally Unique Identif ... -
Java忽略大小写替换和提取字符信息
2009-12-01 09:27 46611. replaceAll 不区分大小写替换字符: Str ... -
java图片裁剪原理
2009-12-01 09:19 3409原文地址:http://blog.csdn.net/lql87 ... -
Java生成高品质缩略图
2009-12-01 09:14 3155import java.awt.image.Buffere ... -
FileReader读取中文txt文件编码丢失问题(乱码)
2009-11-19 16:06 25804有一个UTF-8编码的文本文件,用FileReader读取到一 ... -
实战java反射机制-让你迅速认识java强大的反射机制
2009-11-12 10:53 2081http://stephen830.iteye.com/blo ... -
利用jxl.jar读取EXCEL文件
2009-11-05 15:49 43911 从Excel文件读取数据表 ... -
Lucene整合"庖丁解牛"中文分词包
2009-10-26 15:03 2291版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声 ... -
lucene Analysis包分析
2009-10-26 13:39 3980算法和数据结构分析: 由于Analysis包比较简单,不详述 ... -
lucene学习笔记
2009-10-26 11:24 1715Lucene 其实很简单的,它最主要就是做两件事:建立索引和进 ... -
java实现截图和保存
2009-10-23 13:50 6030BufferedImage是个好类,和ImageIO和Grap ... -
java-Socket接受中文乱码的解决
2009-10-15 12:31 16262服务器发送一条数据如: BufferedReader in ... -
socket发送和接受数据
2009-10-14 14:13 2691import java.net.*; import ja ...
相关推荐
本文将深入探讨`Dom4jUtils`工具类如何增强DOM4J的功能,以及在`MarkerIce.jar`中它如何帮助开发者更便捷地处理XML。 首先,`Dom4jUtils`工具类通常包含了对DOM4J库的一系列实用方法,旨在简化XML的读取、解析、...
首先,`Dom4jUtil.java`可能是包含DOM4J实用方法的类。这个类可能包括了创建、查询、修改XML文档的各种静态方法。例如,可能会有用于解析XML文件到Document对象的方法,或者用于将Document对象转换回XML字符串的方法...
- **Dom4jTest.java**: 测试类,使用JUnit编写,用于验证DOM4JUtil的功能是否正常工作。 - **说明.txt**: 提供了关于如何使用这些文件的简短说明。 在实践中,`Dom4jUtil.java`会包含如`createXMLDocument()`, `...
- 提供的`Dom4jUtil.java`和`Dom4jTest.java`可能是实现这些操作的示例代码。在`Dom4jUtil.java`中可能定义了一些通用的静态方法,用于创建、读取和修改XML文档;而在`Dom4jTest.java`中,可能会有测试用例来调用...
而`Dom4jUtil.jar`可能是开发者自定义的DOM4J工具类库,封装了一些常用的操作方法,便于快速集成和使用。 使用DOM4J的基本步骤包括: 1. **导入库**:在Java项目中添加DOM4J的jar包依赖,确保编译和运行时能访问到...
本篇文章将详细讲解与"FusionChart 工具类"相关的知识,主要关注`FusionChartUtil.java`和`Dom4jUtil.java`这两个文件。 首先,我们来看`FusionChartUtil.java`。这个类通常包含了与FusionCharts集成所需的各种实用...
String url = DOM4JUtil.class.getResource("").getPath(); try { // 通过文件路径获取配置文件信息 Document doc = sr.read(url + "config.xml"); // 获取根节点 root = doc.getRootElement(); } catch ...
总之,`HttpClientCallSoapUtil`和`Dom4jUtil`这两个类分别实现了对WebService的调用和响应XML的解析。通过HttpClient发送SOAP请求,并利用Dom4j解析返回的XML数据,可以有效地与Web服务进行交互并处理结果。理解并...
ClassLoader cl = Dom4JUtil.class.getClassLoader(); InputStream in = cl.getResourceAsStream("b.properties"); Properties prop = new Properties(); prop.load(in); ``` - **注意**:通过ClassLoader可以...
"jutil.js" 很可能是包含了一系列实用工具函数的JavaScript库,它可能包含字符串操作、数组处理、日期格式化、DOM操作等各种通用功能。这样的工具库在开发中十分常见,因为它能帮助开发者处理各种常见的编程任务,...