我正在嘗試將整個XML文檔(tagnames/tagtypes不相關)複製到字符串變量中。要使用的語言是Java。我使用ReadAllText在C#中執行此操作,但我需要在Java中找到該命令的等效命令或其他想法,以便能夠將整個XML文檔作爲字符串。我一直在研究這一點。這是一個更大項目的一部分。這是剩下要做的唯一事情。有什麼建議麼? 在此先感謝。在Java中將XML文檔複製到字符串變量中
回答
嘗試下面的代碼:
public String convertXMLFileToString(String fileName)
{
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
InputStream inputStream = new FileInputStream(new File(fileName));
org.w3c.dom.Document doc = documentBuilderFactory.newDocumentBuilder().parse(inputStream);
StringWriter stw = new StringWriter();
Transformer serializer = TransformerFactory.newInstance().newTransformer();
serializer.transform(new DOMSource(doc), new StreamResult(stw));
return stw.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
非常感謝。我想通了!我很感激幫助。儘管如此,這是一種不同的方式。總是很高興學習新的東西! – Balaji
好,因爲這是java的,而不是一種腳本語言,你只需要使用一臺掃描儀或文件閱讀器和逐行讀它,並將它添加到一個字符串。
This website在java中有很好的文件io概述。即使瞭解了文件io,我也學到了很多東西。
這裏是你可以做一個樣本:
private void processFile(File file)
{
StringBuilder allText = new StringBuilder();
String line;
Scanner reader = null;
try {
FileInputStream fis = new FileInputStream(propertyFile);
InputStreamReader in = new InputStreamReader(fis, "ISO-8859-1");
reader = new Scanner(in);
while(reader.hasNextLine() && !errorState)
{
line = reader.nextLine();
allText.append(line);
}
} catch (FileNotFoundException e)
{
System.err.println("Unable to read file");
errorState=true;
} catch (UnsupportedEncodingException e) {
System.err.println("Encoding not supported");
errorState=true;
}
finally
{
reader.close();
}
}
使用StringWriter
與StreamResult
。
注意,要非常小心你在那個字符串後面做什麼。如果稍後使用錯誤的字符編碼將其寫入某種類型的stream/byte []中,則會生成破碎的xml數據。
我上一次使用了緩衝讀取器。工作得很好。
String output = "";
try {
FileInputStream is = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = "";
while ((line = br.readLine()) != null) {
output = output + line;
}
br.close();
is.close();
} catch(IOException ex) {
//LOG!
}
我最初的實現是使用一個實際的緩衝區,但我似乎保持具有刷新緩衝區問題,所以我就這樣這是超級容易。
請記住,BufferedReader會在每行結尾處吃掉\ n。 – RealHowTo
這是我最終的目標。我使用XStream作爲串行器,它會阻塞新的行字符。最終,我不想在任何版本的代碼中使用這些字符,因爲我試圖忽略XML的純文本可讀性並使用一些XML友好的查看器。 – PaulSCoder
嘿,你知道如何將特定的標籤內容複製到字符串中嗎?這是我的個人資料中的另一個問題,它有詳細信息。我真的很感激你,如果你能幫助我,因爲你看起來像一個很好的編碼器!謝謝! – Balaji
許多答案几乎可以得到它,但不完全正確。
- 如果您使用的BufferedInputStream和讀取線,結果丟失換行符
- 如果你使用一個BufferedReader或掃描儀和讀線,結果丟失了原來的換行符的編碼可能是錯誤的。如果你不這樣做
String file2string(File f, Charset cs) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(10000); InputStream in = new BufferedInputStream(new FileInputStream(f)); int c; while ((c = in.read()) != -1) out.write(c); in.close(); return out.toString(cs.name()); }
:
- 如果在結果使用一個作家,編碼可能不匹配源
如果你正知道源編碼,你可以這樣做知道源編碼,依靠XML解析器檢測到它,並控制輸出:
String transform2String(File f, Charset cs) throws IOException,
TransformerFactoryConfigurationError, TransformerException {
Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.ENCODING, cs.name());
ByteArrayOutputStream out = new ByteArrayOutputStream(10000);
t.transform(new StreamSource(new BufferedInputStream(
new FileInputStream(f))), new StreamResult(out));
return out.toString(cs.name());
}
- 1. 將xml節點複製到Java中的新文檔中
- 2. 將Android中的字符串從EditText複製到Android上的字符串變量
- 3. 將字符串變量附加到xml
- 4. 將字符串轉換爲java中的XML文檔
- 5. 如何將字符串解析爲Java中的XML文檔?
- 6. 將字符串從BSS變量複製到程序集中的BSS變量
- 7. 將生成的xml存儲到java中的字符串變量中
- 8. 將XML字符串插入到openXML文檔中
- 9. 字符串複製在java中
- 10. 在Java中複製字符串
- 11. 將字符串複製到
- 12. 如何將字符串從文本文件複製到Java字符串?
- 13. 用Java中的字符串替換XML文檔中的元素
- 14. 將XML文檔轉換爲字符串?
- 15. J2ME字符串到XML文檔
- 16. 將EnvVar字符串複製到char []變量
- 17. 如何將XML字符串合併到主XML文檔對象
- 18. 將指針中的字符串複製到字符串
- 19. 將Xml元素複製到C#中的另一個文檔中#
- 20. 如何將字符串複製到int數組中? (Java)
- 21. 類型將字符串變量投射到Java中的地圖
- 22. 將c字符串數組複製到std :: string向量中
- 23. 如何在JavaScript中將xml存儲爲字符串變量?
- 24. 將字符串從字符串複製到字符串
- 25. 在xml字符串中嵌入xml文檔
- 26. 在xml文件中使用字符串變量(android studio)
- 27. 批量複製XML中兩個標記之間的字符串
- 28. java將cdata添加到xml字符串
- 29. 字符串中的Java變量名稱
- 30. Python將sting +變量+字符串存儲到變量中
http://stackoverflow.com/questions/5511096/java-convert-formatted-xml-file-to-one-線串 – Shawn
@Shawn:+1,完美重複。 –
不要忘記對答案提出反饋意見並選擇最佳答案 – hbhakhra