關於xml的編碼問題

2021-06-08 13:10:38 字數 1574 閱讀 5723

昨天在進行蕭山校產的報表配置的時候遇到乙個問題,我要求輸出的xml檔案中保留我原來的內容(內容中包括有很多的空格),但是dom4j在輸出檔案時自動將這些空格去除了,經研究有以下發現:

當我們在用dom4j處理xml檔案輸出的時候可能會遇到以下的問題,就是我們要求每個element中的text保留我寫入的原始資訊,比如說空格不能被去除;

比如說我們要輸出xml檔案中的內容為:

<?xml version="1.0" encoding="gb2312"?>

james strachan

中國 bob mcwhirter

注意author中的內容包括很多的空格;

不妨假設我們已經用以下的方法實現了對上面document的寫入:

public document createdocument()

dom4j中把document直接或者任意的node寫入xml檔案時有兩種方式:

1、這也是最簡單的方法:直接通過write方法輸出,如下:

filewriter fw = new filewriter("test.xml");

document.write(fw);

此時輸出的xml檔案中為預設的utf-8編碼,沒有格式,空格也沒有去除,實際上就是乙個字串;其輸出如下:

<?xml version="1.0" encoding="utf-8"?>

james strachan

中國 bob mcwhirter

2、用xmlwriter類中的write方法,此時可以自行設定輸出格式,比如緊湊型、縮減型:

outputformat format = outputformat.createprettyprint();//縮減型格式

//outputformat format = outputformat.createcompactformat();//緊湊型格式

format.setencoding("gb2312");//設定編碼

設定text中是否要刪除其中多餘的空格

xmlwriter xw=new xmlwriter(fw,format);

xw.write(dom.createdocument());

此時輸出的xml檔案中為gb2312編碼,縮減型格式,但是多餘的空格已經被清除:

<?xml version="1.0" encoding="gb2312"?>

james strachan

中國 bob mcwhirter

如果想要對xml檔案的輸出格式進行設定,就必須用xmlwriter類,但是我們又需要保留其中的空格,此時我們就需要對format進行設定,也就是加上一句format.settrimtext(false);

這樣就可以既保持xml檔案的輸出格式,也可以保留其中的空格,此時的輸出為:

<?xml version="1.0" encoding="gb2312"?>

james strachan

中國 bob mcwhirter

ps:element中attribute中的值如果有空格的話在任何情況下是都不會去除空格的;

XML編碼問題

當時用ie5.0或者更高版本瀏覽xml文件時,可能會遇到兩中不同的編碼錯誤 在文字內容中發現乙個非法字元 an invalid character was found in text content 如果你的xml文件和你的xml文件的編碼格式不匹配就可能導致錯誤發生。通常情況是,xml文件包含一些...

有關XML的編碼問題

由於xml文件中可以包含外語字母,如挪威語 或法語 因此要讓你的xml分解器理解這些字母,就應該把xml文件儲存成unicode 統一的字元編碼標準 1 windows 95 98 記事本 windows 95 98 記事本不能將檔案儲存成unicode 格式。你可以用notepad 編輯和儲存包含...

XML檔案編碼問題

這兩天的過程中的乙個專案,以解決編碼格式ansi的xml當檔案。我遇到了一些問題。下面的例子現在將總結分析過程。通過win7記事本或notepad 建立乙個xml檔案test source xml version 1.0 encoding utf 16 coffeecat 測試 能夠看到在xml檔案...