从Web服务检索的Java-XML

时间:2012-06-10 20:06:06

标签: java xml web-services utf-8

好的,我正在尝试做的是创建一个使用从Web服务获取的数据的java程序。我可以获取数据,但它是XML文档的格式,当我将它打印到(Eclipse)控制台时,每个字母之间都有空格,而replaceAll方法不起作用。代码的相关部分如下。

BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(webAdress).openStream()));
String XMLcode = reader.readLine();
XMLcode = XMLcode.concat(reader.readLine());
XMLcode = XMLcode.replaceAll(" ", "");
System.out.println(XMLcode); //in the finished program, I will do something with the data in the XML document.

结果如下所示 -

þÿ < ? x m l  v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >

接下来是我正在寻找的实际数据。一些互联网搜索意味着þÿ意味着这是一个文本编码问题,但我找到的将UTF-8转换为UTF-16的所有方法都没有帮助(但是,他们确实将change改为??)。有没有人知道如何解决这个问题,或者知道一种“标准”方式来读取不需要在文件中提供的XML?

注意 - 我没有提出有问题的网络服务,因此无法对其进行修改,也不知道它是如何工作的。

2 个答案:

答案 0 :(得分:0)

你为什么不试试

XMLnode = XML code.replaceAll(“\ s”,“”)

答案 1 :(得分:0)

尝试使用可能是一个好主意:

new BufferedReader(new InputStreamReader(new URL(webAdress).openStream(), "UTF-16"));

您可以使用以下代码进行测试:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

public class CharsetChanging {

    public static void main(final String[] args) throws IOException {

        File infile = new File("/tmp/utf16.txt");

        FileInputStream inputStream = new FileInputStream(infile);

        Reader in = new InputStreamReader(inputStream, "UTF-16");

        int read;

        while ((read = in.read()) != -1) {
            System.out.print(Character.toChars(read));
        }

        in.close();
    }
}

只需将new FileInputStream(infile)替换为new URL(webAdress).openStream()