【问题标题】:Java- XML retrieved from a web service从 Web 服务检索的 Java-XML
【发布时间】:2012-06-10 20:06:05
【问题描述】:

好的,所以我要做的是创建一个使用从 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 的所有方法都没有帮助(但是,他们确实将 þÿ 更改为 ??)。有没有人知道如何解决这个问题,或者知道读取 XML 的“标准”方式不需要在文件中提供?

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

【问题讨论】:

  • 在浏览器中输入网址时,xml 是什么样的?

标签: java xml web-services utf-8


【解决方案1】:

也许是个好主意尝试:

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()

【讨论】:

    【解决方案2】:

    你为什么不试试

    XMLcode = XMLcode.replaceAll("\s","")

    【讨论】:

    • 因为那会破坏他的xml! 那里发生了什么?
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多