成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詭異的dom4j的輸出

開發 后端
如果XML里面包含了一些特殊字符,比如 
 這個是line feed,也就是換行符。在經過它輸出后總是會變成\n, 不好干預它的轉化。下面來看具體的例子。

昨天發現一個問題,使用dom4j的XMLWrtier輸出的問題。

首先先說一下現象吧,如果XML里面包含了一些特殊字符,比如 這個是line feed,也就是換行符。在經過它輸出后總是會變成\n, 不好干預它的轉化。下面來看具體的例子。

這個是原始的xml文件:

Xml代碼

 

 

 

 

  1. xml version="1.0" encoding="UTF-8"?>    
  2. <Package id = "test" name = "Test Test">    
  3.          
  4. Package>  

下面是測試代碼:

Java代碼

  1. package org.powermock.examples.dom4j;     
  2.     
  3. import java.io.BufferedReader;     
  4. import java.io.File;     
  5. import java.io.FileInputStream;     
  6. import java.io.FileOutputStream;     
  7. import java.io.InputStreamReader;     
  8.     
  9. import javax.xml.transform.Transformer;     
  10. import javax.xml.transform.TransformerFactory;     
  11. import javax.xml.transform.stream.StreamResult;     
  12.     
  13. import junit.framework.Assert;     
  14.     
  15. import org.dom4j.Document;     
  16. import org.dom4j.DocumentHelper;     
  17. import org.dom4j.Element;     
  18. import org.dom4j.io.DocumentSource;     
  19. import org.dom4j.io.XMLWriter;     
  20. import org.junit.Test;     
  21.     
  22. public class TestXMLOutput {     
  23.          
  24.     public final static String FILE_NAME = "text.xml";     
  25.          
  26.     @Test    
  27.     public  void testDom4j() {     
  28.     
  29.         Document document = createDocument();     
  30.         try {     
  31.             Element rootElement = document.getRootElement();     
  32.             String packageName = rootElement.attributeValue("name");     
  33.                  
  34.             Assert.assertEquals("Test\nTest", packageName);     
  35.                  
  36.             FileOutputStream fos = new FileOutputStream("dom4j_"+FILE_NAME);     
  37.             XMLWriter writer = new XMLWriter(fos);     
  38.             writer.setEscapeText(false);     
  39.             writer.write(document);     
  40.                  
  41.             fos.close();     
  42.             writer.close();     
  43.         } catch (Exception e) {     
  44.             e.printStackTrace();     
  45.         }     
  46.     }     
  47.          
  48.     @Test    
  49.     public void testDom(){     
  50.         Document document = createDocument();     
  51.         try {     
  52.             FileOutputStream fos = new FileOutputStream("dom_"+FILE_NAME);     
  53.              // Use a Transformer for output     
  54.              TransformerFactory tFactory =     
  55.                 TransformerFactory.newInstance();     
  56.              Transformer transformer = tFactory.newTransformer();     
  57.              transformer.setOutputProperty("indent","yes");     
  58.              transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","4");     
  59.              transformer.setOutputProperty("encoding","UTF-8");     
  60.                   
  61.              DocumentSource source = new DocumentSource(document);     
  62.              StreamResult result = new StreamResult(fos);     
  63.              transformer.transform(source,result);     
  64.                   
  65.              fos.close();     
  66.         } catch (Exception e) {     
  67.             e.printStackTrace();     
  68.         }     
  69.     }     
  70.          
  71.     private Document createDocument(){     
  72.         Document document = null;     
  73.         try {     
  74.             File file = new File(FILE_NAME);     
  75.             BufferedReader reader = new BufferedReader(     
  76.                     new InputStreamReader(new FileInputStream(file)));     
  77.                  
  78.             StringBuffer buffer = new StringBuffer();     
  79.             String line = "";     
  80.             while((line = reader.readLine()) != null){     
  81.                 buffer.append(line);     
  82.             }     
  83.             reader.close();     
  84.                  
  85.             document = DocumentHelper.parseText(buffer.toString());     
  86.         } catch (Exception e) {     
  87.             e.printStackTrace();     
  88.         }     
  89.         return document;     
  90.     }     
  91. }  

 

下面是dom4j的轉換后的輸出:

Xml代碼

  1. xml version="1.0" encoding="UTF-8"?>    
  2. <Package id="test" name="Test     
  3. Test">   Package> 

 

下面是transfomer的輸出:

Xml代碼

  1. xml version="1.0" encoding="UTF-8"?>    
  2. <Package id="test" name="Test Test">  Package> 

 

大家看到效果了把,dom4j變成了 \n, 但是transfomer還是原來的格式。

如果大家誰有對這塊有研究的,希望給我留言解決這個問題。

【編輯推薦】

  1. JavaFX HTTP網絡和XML分析
  2. 詳解Java解析XML的四種方法
  3. XML新手入門 創建構造良好的XML
責任編輯:金賀 來源: ITEYE博客
相關推薦

2009-06-23 14:17:00

Dom4j

2012-05-30 10:03:57

dom4jXML亂碼

2009-04-02 17:37:38

dom4jXMLJava

2013-05-30 15:02:33

dom4j反射

2024-07-22 08:16:15

2009-06-11 17:22:03

操作xml方式Java

2022-03-25 13:42:15

Log4j漏洞網絡安全

2014-12-31 14:09:23

xml解析

2009-08-19 22:29:12

VMWare系統時間故

2020-02-28 14:48:51

結構系統程序

2010-08-24 16:13:38

面試

2009-09-25 10:38:42

Hibernate動態

2013-08-27 10:20:35

JavaLINQLinq4j

2011-04-11 09:53:06

Oracle

2018-08-01 10:40:04

Redis內存增長

2024-01-29 09:22:59

死鎖線程池服務

2015-07-29 10:34:17

微信詭異

2021-07-12 22:39:15

JVM深度學習ETL

2016-10-21 13:10:18

javalog4jslf4j

2023-02-23 08:02:19

PulsarJava
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线国产一区二区 | 久久久久亚洲国产| 啪啪毛片 | 永久免费视频 | 亚洲欧美一区二区在线观看 | 亚洲综合一区二区三区 | 午夜a v电影 | 久久久精品一区二区三区 | www.亚洲成人网 | 欧美日韩成人网 | 亚洲国产高清高潮精品美女 | 国产欧美日韩精品一区 | 午夜视频免费 | 色橹橹欧美在线观看视频高清 | 日韩亚洲视频 | 99精品国自产在线观看 | 免费精品久久久久久中文字幕 | 日日夜夜影院 | 欧美一级在线观看 | 欧美一级欧美三级在线观看 | 久久丁香 | 91久久精品国产 | 懂色中文一区二区在线播放 | 美女人人操 | 精区3d动漫一品二品精区 | 免费中文字幕日韩欧美 | 羞羞的视频在线 | 成年人网站免费 | 国产一区精品在线 | 精品日韩一区二区 | 国产综合久久 | 国产精品一区久久久 | 天堂成人国产精品一区 | 久久精品亚洲国产 | 国产精品久久久久久久毛片 | 久久国产免费看 | 特黄特色大片免费视频观看 | 久久国产日本 | 青青草一区二区三区 | 狠狠色狠狠色综合日日92 | 久久人爽 |