尝试在Java中以字符串形式读取完整的XML文件
我试图用Java读取整个XML文件。下面是我的XML文件-尝试在Java中以字符串形式读取完整的XML文件,java,xml,string,file,Java,Xml,String,File,我试图用Java读取整个XML文件。下面是我的XML文件- <?xml version="1.0" encoding="UTF-8"?> <app hash='nv', name='Tech', package = '1.0', version='13', filesize='200', create_date='01-03-1987', upate_date='07-09-2013' > <url>
<?xml version="1.0" encoding="UTF-8"?>
<app hash='nv', name='Tech', package = '1.0', version='13', filesize='200', create_date='01-03-1987', upate_date='07-09-2013' >
<url>
<name>RJ</name>
<score>10</score>
</url>
<url>
<name>ABC</name>
<score>20</score>
</url>
</app>
只要我运行上面的程序。我总是得到下面的解释-
[Fatal Error] app.xml:2:22: Element type "app" must be followed by either attribute specifications, ">" or "/>".
知道为什么会这样吗?您的xml中有语法错误。元素的属性不应该用逗号分隔。应该是,
<?xml version="1.0" encoding="UTF-8"?>
<app hash='nv' name='Tech' package='1.0' version='13' filesize='200' create_date='01-03-1987' upate_date='07-09-2013' >
<url>
<name>RJ</name>
<score>10</score>
</url>
<url>
<name>ABC</name>
<score>20</score>
</url>
</app>
RJ
10
基础知识
20
如果您不想将其解析为XML
,而只想显示为字符串,则可能需要使用
BufferedReader
和readLine()将其存储在StringBuilder
中,然后显示它
例如:
public String readFile(String path) throws IOException{
StringBuilder sb = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(path))){
while ((String sCurrentLine = br.readLine()) != null) {
sb.append(sCurrentLine);
}
}
return sb.toString();
}
编辑在java 8中,您只需使用
String xml = Files.lines(Paths.getPath(path)).collect(Collectors.joining("\n"));
如果你真的想要它作为一个字符串,为什么要通过XML解析器运行它?为什么属性用逗号分隔?@Matt,我不知道该怎么做,所以我想让我们通过XML解析器来完成。还有其他想法吗?用bufferedReader将其作为文件读取,并将缓冲区放入和stringbuilder中,然后是toString();正如@AVD所说,它不起作用的唯一原因是到处都是逗号。删除它们。但它不尊重文件的
行。不是路径,它必须是Paths类。@SemihOkanPehlivan已修复
String xml = Files.lines(Paths.getPath(path)).collect(Collectors.joining("\n"));
try{
InputStream is = getAssets().open("HeadWork_JackWell.xml");
DocumentBuilderFactory dFactory= DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder= dFactory.newDocumentBuilder();
Document doc= dBuilder.parse(is);
try {
StringWriter sw = new StringWriter();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(new DOMSource(doc), new StreamResult(sw));
String s=sw.toString();
System.out.println(s);
} catch (Exception ex) {
throw new RuntimeException("Error converting to String", ex);
}