XML—代码—DOM4J解析
众所周知,xml常用语数据存储和传输,文件后缀为 .xml;
它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。
如何定义这些标记,既可以选择国际通用的标记语言如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML设计用来传送及携带数据信息,不用来表现或展示数据,所以XML用途的焦点是它说明数据是什么,以及携带数据信息。而HTML语言则用来表现数据。可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。
通过DOM4J API和标准DOM接口具有并行访问功能,DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections类,例如大名鼎鼎的hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.
-------------------------------------------------
--------------------------------------------------
public static ArrayList<Employee> showEM() throws ParserConfigurationException, IOException, Exception{
ArrayList<Employee> list = new ArrayList<Employee>();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("employee.xml");
NodeList emList =doc.getElementsByTagName("em");
for(int i=0;i<emList.getLength();i++){
Employee emClass = new Employee();
Element em =(Element)emList.item(i);
String attrValue = em.getAttribute("id");
emClass.setNo(Integer.parseInt(attrValue));
NodeList em2List = em.getChildNodes();
for(int j=0;j<em2List.getLength();j++){
int type = item.getNodeType();
String content = item.getTextContent();
String name = item.getNodeName();
if(name != null && name.equals("emname")){
}else if(name!= null && name.equals("job")){
public static void main(String[] args) {
ArrayList<Employee> list = showEM();
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
--------------------------------------------------
DOM4J解析xml整理
xml解析异常1:
java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
由于声明的Xml是UTF-8编码的,而转换的时候使用默认的编码是gbk的
===============================
The processing instruction target matching "[xX][mM][lL]" is not allowed. activity_main.xml
<?xml version="1.0" encoding="UTF-8"?> 前面不能有空格
====================================
Document document = DocumentHelper.parseText(xmlResult);====
===================================
public void LoadXML(String path){
SAXReader saxReader= new SAXReader();
//read()的入参可以是File,InputStream,Reader,URL等多种方式....,用字节流加载防止中文乱码,很重要
=============================================
public void saveXML(String path){
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileWriter(path), format);
=========================================
将doc对象转化成xmlstring的格式,并可以将string打印出来。
Element root =doc.getRootElement();
拿根节点对象: Element rootElem = document.getRootElement();
获取某节点的单个子节点:Element memberElem = root.element("节点名");
获取根节点下的所有的名为name子节点的集合并遍历:(遍历之前先判断有无子节点)
List nodes= root.elements("name");
for(Iterator it = nodes.iterator() ; it.hasNext() ; ){
Element elm = (Element) it.next();
for(Iterator it = root.elementIterator() ; it.hasNext() ; ){
Element elm = (Element) it.next();
Element ageELm = newMenberElm.addElement("age");
Element.getParent().remove(Element);
==========================================
若有子节点,则得到的String为空串"",遍历之前先判断否则空指针异常,例:
String text = root.getTextTrim();
System.out.println("根节点的内容是:"+text);
Iterator<Element> item = root.elementIterator();
String text = root.elementText("name");
设置/修改节点的内容:Element.setText("内容");
修改节点的名字 :Element.setName()================================================
Atrribute attribute = root.attribute("size");
String text = attribute .getText();
Element.attributeValue("size");
for(Iterator it = root.attributeIterator() ; it.hasNext() ; ){
Atrribute attribute = it.next();
String text = attribute .getText();
Atrribute attribute = root.attribute("size");
//root.remove(root.attribute("size"));
添加节点属性 Element.addAttribute("language", "java");如果重复添加则覆盖,可当做修改操作
===============================================
XML—代码—DOM4J解析的更多相关文章
- xml之dom4j解析
* 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...
- xml的Dom4j解析规则
一,xml的样本 <?xml version="1.0" encoding="utf-8"?> <contactList> <co ...
- java基础 xml 使用dom4j解析 xml文件 servlet根据pattern 找到class
package com.swift.kaoshi; import java.io.File; import java.util.List; import java.util.Scanner; impo ...
- [工作代码]dom4j解析实例
工作中,我需要和另一个公司(A公司)共同开发一个模块,我写一个servlet接口,A公司携带xml格式的报文来访问.我采用流的形式读取,在处理后以流的形式写入,在返回(相应)给A公司. demo: p ...
- XML(四)dom4j解析XML
使用dom4j须要导入jar包 jar包下载地址:http://pan.baidu.com/s/1o65jWRw 将dom4j-1.6.1.jar包导入Eclipse book2.xml <?x ...
- Dom4j解析xml
public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...
- xml(3)--dom4j实现crud操作
1.XML解析技术概述 (1)XML解析方式分为两种:dom和sax dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
随机推荐
- yum配置与使用(很详细)
yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.repos.d目录下增加.repo文件.一.yum的配置文件 $ cat /etc/yum ...
- OpenStack入门之【OpenStack-havana】之单网卡-All In One 安装(基于CentOS6.4)
这篇文章是自己的一篇老文,分享下,请君慢用.... =========================================== [特别申明]:经过了一段时间的不断学习加不断的测试得出本文, ...
- Python的容器、生成器、迭代器、可迭代对象的家谱
前言 之前虽然写Python,但是对Python的这些概念也是模模糊糊,知道有一天,看到了一篇文章,讲的透彻,所以就写这篇作为对于这篇高文的读书笔记吧 致谢,该文作者,完全理解Python迭代对象.迭 ...
- 严版数据结构题集2.13 & 2.14
1.试写一算法在带头结点的单链表结构上实现线性表操作Locate(L,x) 2.试写一算法在带头结点的单链表结构上实现线性表操作Length(L) #include<stdio.h> #i ...
- [工具] Textify – 复制不可能的窗口内容[Win]
Textify 是一款 Windows 下的小工具,能够复制那些平时无法复制的内容,比如错误提示.菜单按钮文字等等,只需要按下快捷键就可以随意复制,俗称复制不可能. http://rammichael ...
- [VS]VS2010如何使用Visual Studio Online在线服务管理团队资源(在线TFS)
前言 Visual Studio Online,也就是以前的Team Foundation Service,从名字可以看出这是一个团队资源管理服务.在微软的云基础架构中运行,无需安装或配置任何服务器, ...
- 危险的浮点数float
今天写程序又以为我见鬼了!最后查出来发现原来又是浮点数搞的鬼! 情况大致是这样的,我想要测试向量运算的速度,所以要对一个浮点数向量进行求和运算,代码如下: int vect_size=10000000 ...
- python实现简单购物车系统(练习)
#!Anaconda/anaconda/python #coding: utf-8 #列表练习,实现简单购物车系统 product_lists = [('iphone',5000), ('comput ...
- Sciter TIScript KeyEvent
function movable() // install movable window handler{ function onKeyDown(evt) { if(evt.keyCode == Ev ...
- python中列表排序,字典排序,列表中的字典排序
#-*- encoding=utf-8 -*- # python3代码 import operator 一. 按字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} 1 ...