Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在Java中以字符串形式读取完整的XML文件_Java_Xml_String_File - Fatal编程技术网

尝试在Java中以字符串形式读取完整的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>

我试图用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>
                <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);
    }