在Java中无需操作或优化即可将XML文件转换为字符串

cnh2zyt3  于 2023-01-29  发布在  Java
关注(0)|答案(3)|浏览(245)

我在使用JDOM2处理XML文件时遇到了一些问题。我想把XML文件转换成一个字符串,而不需要任何操作或优化。
这就是我的Java代码:

SAXBuilder builder = new SAXBuilder();
    File xmlFile = f;

    try 
    {
        Document document = (Document) builder.build(xmlFile);

        xml = new XMLOutputter().outputString(document);

    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

    return xml;

但是,当我将字符串与原始XML文件进行比较时,我注意到一些变化。
原文:

<?xml version="1.0" encoding="windows-1252"?>
<xmi:XMI xmi:version="2.1" xmlns:uml="http://schema.omg.org/spec/UML/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:thecustomprofile="http://www.sparxsystems.com/profiles/thecustomprofile/1.0" xmlns:SoaML="http://www.sparxsystems.com/profiles/SoaML/1.0">

和字符串:

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:SoaML="http://www.sparxsystems.com/profiles/SoaML/1.0" xmlns:thecustomprofile="http://www.sparxsystems.com/profiles/thecustomprofile/1.0" xmlns:uml="http://schema.omg.org/spec/UML/2.0" xmi:version="2.1">

所有的元音变音(ä,ö,ü)也都改变了。我会得到这样的结果:用""代替"ä'。
有什么办法可以阻止这种行为吗?

aelbi1ox

aelbi1ox1#

首先,正如其他人所说的,不应该使用任何XML处理,只需要将文件作为文本文件读取即可。
第二,元音变音字符显示为“”是由于使用了不正确的字符集(编码)。字符集错误可能在代码中,也可能在XML文件中。
原始的XML文件包含encoding="windows-1252",但是XML很少使用UTF-8以外的编码,所以我怀疑该文件实际上是UTF-8文件,并且它声称使用的编码不正确。
尝试在阅读文件时强制使用UTF-8。无论如何,在将字节转换为文本时指定字符集都是一个很好的做法:

String xml = new String(
    Files.readAllBytes(xmlFile.toPath(), StandardCharsets.UTF_8));
ttygqcqt

ttygqcqt2#

试试这个:

String xmlToString=FileUtils.readFileToString(new File("/file/path/file.xml"));

你需要有Commons-iojar来做这个。

rqmkfv5c

rqmkfv5c3#

看看这对你有用吗。

//filename is filepath string
BufferedReader br = new BufferedReader(new FileReader(new File(filename)));
String line;
StringBuilder sb = new StringBuilder();
while((line=br.readLine())!= null){
    sb.append(line.trim());
}

相关问题