我正在尝试将整个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