java-读取xml

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>

示例文件结束----

时间: 2024-11-08 02:41:46

java-读取xml的相关文章

java读取XML文件的四种方式

java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>河南省郑州市</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>河南省郑州市二七区&

Java读取XML文件(1)

Java读取XML文件(1) ReadXml.java package Read; import java.io.IOException; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import

JAVA读取xml(转)

Java parse XML methods(4) 关键字: xml  1. 介绍   1>DOM(JAXP Crimson解析器)     DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM 以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因

java读取xml文件的三种方法

xml既简单又标准,值得拥有和学习,好多地方都用的到.假设有这么一个book.xml: <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Copyright w3school.com.cn --> <!-- W3School.com.cn bookstore example --> -<bookstore> -<book category="childre

Java读取xml文件的四种方法,及其取得配置文件的方法

xml文件: Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>河南省郑州市</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>河南省郑州市二七区</ADDR&g

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

package com.yyl.text; import java.io.FileInputStream; import java.util.ArrayList; import org.junit.Test; import org.nuxeo.common.xmap.XMap; import com.yin.vo.Book; import com.yin.vo.Books; public class XmapTest { /** * 读取XML文件内容 * @throws Exception *

java读取xml配置文件和properties配置文件

1.读取xml 使用dom4j解析xml  下载地址:http://sourceforge.net/projects/dom4j/files/ import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; try { File f = new File(filename); if (!f.exists()) { System.out.println(" Error : Config file

使用Java读取XML数据

---------------siwuxie095 工程名:ReadXML 包名:com.siwuxie095.xml 类名:ReadXML.java 打开资源管理器,在工程 ReadXML 文件夹下,放入 一个 XML 文件:languages.xml languages.xml 的内容: 工程结构目录如下: 代码: package com.siwuxie095.xml; import java.io.File; import java.io.IOException; import javax

Java读取xml文件的四种方法

xml文件: Xml代码 <?xml version="1.0" encoding="GB2312"?>   <RESULT>  <VALUE>  <NO>A1234</NO>  <ADDR>河南省郑州市</ADDR>  </VALUE>  <VALUE>  <NO>B1234</NO>  <ADDR>河南省郑州市二七区&l

精----Java读取xml文件的四种方法

xml文件: Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>河南省郑州市</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>河南省郑州市二七区</ADDR&g