1.使用w3c.document

/**
* 测试
*
*/
public static void testReadLabel() {
String path = "C:\\Users\\huage\\Desktop\\o\\示例数据V2.0";
File file = new File(path);
List<String> list = readChildFiles(file); Set<String> setTableName = new HashSet<String>(); for (String p : list) {
int suffixindex = p.lastIndexOf(".");
if (suffixindex < 0)
suffixindex = 0;
String suffix = p.substring(suffixindex);
if (".xml".equalsIgnoreCase(suffix)) {
// System.out.println(p); DocumentBuilderFactory dbf = DocumentBuilderFactory
.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("file:///" + p);
NodeList dogList = doc.getChildNodes();
for (int i = 0; i < dogList.getLength(); i++) {
Node dog = dogList.item(i);
for (Node node = dog.getFirstChild(); node != null; node = node
.getNextSibling()) {
if (node.getNodeType() == Node.ELEMENT_NODE) {
String name = node.getNodeName();
setTableName.add(name);
System.out.println("xmlTableMap.put(\"" + name+ "\", new TableXml(\"\"));");
if (name.contains("像元光谱")) {
System.out.println(p);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
} // 所有节点的表名
/*
* for (String name : setTableName) {
* System.out.println("xmlTableMap.put(\""
* +name+"\", new TableXml(\""+name+"\",\"\"));"); }
*/
}

2.使用dom4j

主类如下----

public class dom4jTestXML {
/**
*
* 方法描述:读取XML文件示例 备 注: </br>
* 创 建 人: bo.gaobo</br>
* 修改日期: @2013-8-20</br>
*/
public static void readXML() {
SAXReader sr = new SAXReader();// 获取读取xml的对象。
try {
Document doc = sr.read("src/Noname1.xml");// 得到xml所在位置。然后开始读取。并将数据放入doc中
Element el_root = doc.getRootElement();// 向外取数据,获取xml的根节点。
System.out.println("根节点:" + el_root.getName());
Iterator it = el_root.elementIterator();// 从根节点下依次遍历,获取根节点下所有子节点
while (it.hasNext()) {// 遍历子节点
Object o = it.next();
Element el_row = (Element) o;
String str = el_row.getText();
Iterator it_row = el_row.elementIterator();
while (it_row.hasNext()) {
Element el_ename = (Element) it_row.next();
System.out.println(el_ename.getName() + "="
+ el_ename.getData());
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}

/**
  * 
  * 方法描述:写入XML文件并存储 备 注: </br> 
  */

public static void writeToXML() {
Row row1 = new Row();
row1.setCo("co_1");
row1.setComm("comm_1");
row1.setDepno("depno_1");
row1.setEmpno("empno_1");
row1.setEname("ename_1");
row1.setMgr("mgr_1");
row1.setHiredate("2012-03-29");
row1.setJob("job_1");
row1.setSal("sal_1"); Document document = DocumentHelper.createDocument();
Element root = document.addElement("ROWDATA");
Element row = root.addElement("ROW");
row.addElement("CO").addText(row1.getCo());
row.addElement("EMPNO").addText(row1.getEmpno());
row.addElement("ENAME").addText(row1.getEname());
row.addElement("JOB").addText(row1.getJob());
row.addElement("MGR").addText(row1.getMgr());
row.addElement("HIREDATE").addText(row1.getHiredate());
row.addElement("SAL").addText(row1.getSal());
row.addElement("COMM").addText(row1.getComm());
row.addElement("DEPTNO").addText(row1.getDepno()); String filePath = "D:/xmlTest/" + getNowDay() + "/";
String fileName = "row1.xml"; String xmlStr = "";
xmlStr = document.asXML();
try {
Document dcmt = DocumentHelper.parseText(xmlStr);
saveDocumentToFile(dcmt, filePath, fileName, true, "UTF-8");
} catch (DocumentException e) {
e.printStackTrace();
} } public static String getNowDay() {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
return format.format(new Date());
}  /**
  * 方法描述:<b>存储完整XML文件.</b></br>
*
* @param document
* @param xmlFilePath
* @param xmlFileName
* @param isTrimText
* @param xmlEncoding
*/
public static void saveDocumentToFile(Document document,
String xmlFilePath, String xmlFileName, boolean isTrimText,
String xmlEncoding) {
if (document == null || xmlFilePath == null || "".equals(xmlFileName)) {
return;
} File file = new File(xmlFilePath);
// 判断路径是否存在,不存在创建
if (!file.exists()) {
file.mkdirs();
}
// 保存文件
OutputFormat format = null; if (isTrimText) {
format = OutputFormat.createPrettyPrint();
} else {
format = DomXmlOutputFormat.createPrettyPrint();// 保留xml属性值中的回车换行
} if (xmlEncoding != null) {
format.setEncoding(xmlEncoding);// GBK
} else {
format.setEncoding("UTF-8");// UTF-8
} try {
org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(
new FileOutputStream(xmlFilePath + xmlFileName), format);// FileOutputStream可以使UTF-8生效
xmlWriter.write(document);
xmlWriter.close();
} catch (IOException e) {
System.out.println("保存XML异常:" + e.getMessage());
System.out.println("正在保存的文件名是:" + xmlFileName);
}
// 存到文件中结束
} public static void main(String args[]) {
// readXML();
writeToXML();
} } class Row { private String co;
private String empno;
private String ename;
private String job;
private String mgr;
private String hiredate;
private String sal;
private String comm;
private String depno; public String getCo() {
return co;
} public void setCo(String co) {
this.co = co;
} public String getEmpno() {
return empno;
} public void setEmpno(String empno) {
this.empno = empno;
} public String getEname() {
return ename;
} public void setEname(String ename) {
this.ename = ename;
} public String getJob() {
return job;
} public void setJob(String job) {
this.job = job;
} public String getHiredate() {
return hiredate;
} public void setHiredate(String hiredate) {
this.hiredate = hiredate;
} public String getSal() {
return sal;
} public void setSal(String sal) {
this.sal = sal;
} public String getComm() {
return comm;
} public void setComm(String comm) {
this.comm = comm;
} public String getDepno() {
return depno;
} public void setDepno(String depno) {
this.depno = depno;
} public String getMgr() {
return mgr;
} public void setMgr(String mgr) {
this.mgr = mgr;
}
}

主类结束----

辅助类,重写了createPrettyPrint()方法----

import org.dom4j.io.OutputFormat;
/**
* 类 描 述:<b>dom4j输出格式化.</b></br>
*/
public class DomXmlOutputFormat extends OutputFormat {
/**
* 方法描述:<b>dom4j输出格式化..</b></br>
* 备 注: 保存Document到xml文件时,xml属性中的回车换行需要保留,
* 可是发现在使用过程中发现dom4j自动把回车换行去掉了。特写此类</br>
* @return
*/
public static OutputFormat createPrettyPrint() {
OutputFormat format = new OutputFormat();
format.setIndentSize(2);
format.setNewlines(true);
format.setTrimText(false); // 覆盖 父类的 format.setTrimText(true);
format.setPadText(true); return format;
} }

辅助类结束----

示例XML文件----

<?xml version="1.0" ?>
<ROWDATA>
<ROW>
<C0>1</C0>
<EMPNO>7891</EMPNO>
<ENAME>sdffff</ENAME>
<JOB>job</JOB>
<MGR>mgr</MGR>
<HIREDATE>2010-1-1</HIREDATE>
<SAL>5000.00</SAL>
<COMM>1000.00</COMM>
<DEPTNO>deptno</DEPTNO>
</ROW>
<ROW>
<C0>2</C0>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>1980-12-17</HIREDATE>
<SAL>800.00</SAL>
<COMM>comm</COMM>
<DEPTNO>20</DEPTNO>
</ROW>
</ROWDATA>

示例文件结束----

java-读取xml的更多相关文章

  1. Java读取xml数据

    xml中的代码 <?xml version="1.0" encoding="UTF-8"?> <books id="aaa" ...

  2. java 读取XML文件作为配置文件

    首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...

  3. java读取xml文件报“org.xml.sax.SAXParseException: Premature end of file” .

    背景:java读取xml文件,xml文件内容只有“<?xml version="1.0" encoding="UTF-8"?>”一行 java读取该 ...

  4. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  5. JAVA读取XML文件并解析获取元素、属性值、子元素信息

    JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取  InputStream   DocumentBuilderFactory   Element     Node 前言 最 ...

  6. java读取 xml文件

    java读取xml文件的四种方法  转自https://www.cnblogs.com/lingyao/p/5708929.html Xml代码 1 <?xml version="1. ...

  7. JAVA读取XML文件数据

    XML文档内容如下: <?xml version="1.0" encoding="UTF-8"?> <root> <field t ...

  8. Java读取xml

    首先将xml的格式展示出来,如下 <?xml version="1.0"?> <configuration> <connectionStrings n ...

  9. JAVA读取XML并打印

    在G盘下新建XML文档:person.xml,XML代码: <?xml version="1.0" encoding="utf-8"?> <s ...

  10. java读取XML文件,及封装XML字符串

    package com.yyl.text; import java.io.FileInputStream; import java.util.ArrayList; import org.junit.T ...

随机推荐

  1. 【.NET MF】.NET Micro Framework USB移植

    1.开发环境 windows 7  32位 MDK 4.54 .Net Micro Framework Porting Kit 4.2(RTM QFE2) .Net Micro Framework   ...

  2. 【Java每日一题】20161227

    package Dec2016; public class Ques1227 { public static void main(String[] args){ } { c = 1; } int c ...

  3. Linux安装jdk

    查看Java的版本命令:java -version 查看java版本的方法是:运行--->cmd,输入java –version.注意: java命令后是有个空格的,-version表示参数而已 ...

  4. 物联网框架SuperIO 2.2.9和ServerSuperIO 2.1同时更新,更适用于类似西门子s7-200发送多次数据,才能读取数据的情况

    一.解决方案 二.更新内容 1.修改IRunDevice接口,把void Send(io,bytes)改成int Send(io,bytes).2.修改网络控制器,发送数据不直接使用IO实例,改为使用 ...

  5. ArcGIS Engine开发之TocControl

    TocControl控件简介 TocControl控件的主要作用是显示当前加载的图层有哪些.采用什么样的符号等,目的是使用户对当前加载的数据有一个总体的把握.与之相关联的伙伴控件有:MapContro ...

  6. 时间戳TimeStamp处理

     我获得这个时间戳是得想除以1000再处理的,看看你们的需要先除多少再处理 //时间戳处理 NSInteger time = timeStamp / 1000; NSNumber *timer = [ ...

  7. 记录一次Quartz2D学习(二)

    (一)内主要就是讲了线条的绘制以及绘制状态的保存与恢复 本次就讲一些图形的画法 2 图形的绘制 2.1  三角形的绘制 :(就是绘制三条线) - (void)drawRect:(CGRect)rect ...

  8. [Erlang 0116] 当我们谈论Erlang Maps时,我们谈论什么 Part 1

         Erlang 增加 Maps数据类型并不是很突然,因为这个提议已经进行了2~3年之久,只不过Joe Armstrong老爷子最近一篇文章Big changes to Erlang掀起不小了风 ...

  9. SQL Server 2014 Database Mail重复发送邮件特殊案例

    在一数据库服务器(Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64))发现有个作业调用Database Mail发送邮件时, ...

  10. IE8.0.6001这个版本执行JS报错

    现场: OS  winserver 2008 IE8.0.6001.18702   JS报错,不能登陆 OS  XP   IE8.0.6001.18702CO     JS报错,不能登陆 公司测试: ...