XML文件生成读入

来源:互联网 发布:下载命中双色球软件 编辑:程序博客网 时间:2024/06/05 09:10

http://tech.sina.com.cn/s/2004-10-29/1508450741.shtml

 

dom

jdom

sax

dom4j

 

//*****************************************************************

 

http://divine.javaeye.com/blog/734318

 

1.设置编码失效,打开时为ANSI 
OutputFormat format = OutputFormat.createPrettyPrint(); 
format.setEncoding("utf-8"); 
format.setSuppressDeclaration(true); 
format.setIndent(true); //设置是否缩进 
format.setIndent("   "); //以空格方式实现缩进 
format.setNewlines(true); //设置是否换行 
XMLWriter writer = new XMLWriter(new FileWriter(path+"1.xml"),format); 
writer.write(doc); 
writer.close(); 

2.设置编码成功 
XMLWriter writer = new XMLWriter(new FileOutputStream(path)); 
writer.write(doc); 
writer.close(); 


    在上面的代码中输出使用的是FileWriter对象进行文件的输出。这就是不能正确进行文件编码的原因所在,java中由Writer类继承下来的子类没有提供编码格式处理,所以dom4j也就无法对输出的文件进行正确的格式处理。这时候所保存的文件会以系统的默认编码对文件进行保存,在中文版的window下java的默认的编码为GBK,也就是所虽然我们标识了要将xml保存为utf-8格式但实际上文件是以GBK格式来保存的,所以这也就是为什么能够我们使用GBK、GB2312编码来生成xml文件能正确的被解析,而以UTF-8格式生成的文件不能被xml解析器所解析的原因。

 

http://yyzhpq.javaeye.com/blog/307792

 

 

//*****************************************************************

 

 

dom4j解析

 

public void analysis(){

long lasting = System.currentTimeMillis();

try {

File f = new File(filePath);

SAXReader reader = new SAXReader();

Document doc = reader.read(f);

Element root = doc.getRootElement();

Element foo;

for(Iterator i = root.elementIterator("VALUE"); i.hasNext();){

foo = (Element) i.next();

System.out.print("车牌号码:" + foo.elementText("NO"));

System.out.println(" 车主地址:" + foo.elementText("ADDR"));

}

} catch (Exception e) {

e.printStackTrace();

}

System.out.println("Runtime:" + (System.currentTimeMillis() - lasting) + " ms");

}

 

 

 

dom4j生成

 

 

    public void createXML(String fileName) {

    try {

       org.dom4j.Document doc = org.dom4j.DocumentHelper.createDocument();doc.setXMLEncoding("GB18030");

       org.dom4j.Element root = doc.addElement("book");

       root.addAttribute("name", "我的图书");

       org.dom4j.Element childTmp;

       childTmp = root.addElement("price");

       childTmp.setText("21.22");

       org.dom4j.Element writer = root.addElement("author");

       writer.setText("李四");

       writer.addAttribute("ID", "001");

 

       org.dom4j.io.OutputFormat xmlFormat = org.dom4j.io.OutputFormat.createPrettyPrint();

       xmlFormat.setEncoding("GB18030");

            //使用FileOutputStream,而不是FileWriter,因为涉及到编码问题

            org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(new FileOutputStream(fileName),xmlFormat);

            xmlWriter.write(doc);

            xmlWriter.close();

        }catch (Exception e) {

        System.out.println(e);

        }

 

    }

 

 

//*****************************************************************

 

 

http://jiangsha.javaeye.com/blog/373831

 

 

原创粉丝点击