0

我需要在服务器中发出获取请求以获取信息。我要求在 xml 中包含此信息,我的问题是我试图将此答案保留为 xml 对象。我找到了很多答案,但只是为了创建文档,而不仅仅是拥有对象(我需要说我不允许在客户端创建文件)。

我现在有这个代码:

    URL url;
    String urlForScores = urlToRead+"format=xml";  
    HttpURLConnection conn = null;
    String line;
    String result = "";
    try {
       url = new URL(urlForScores);
       conn = (HttpURLConnection) url.openConnection();
       conn.setRequestMethod("GET");
       conn.setRequestProperty("Accept", "application/xml");

       readerChannel = new BufferedReader(
                              new InputStreamReader(conn.getInputStream()));
       while ((line = readerChannel.readLine()) != null) {
          result += line;
       }
       readerChannel.close();



       JAXBContext jc = JAXBContext.newInstance(String.class);
       Unmarshaller unmarshaller = jc.createUnmarshaller();
       StreamSource xmlSource = new StreamSource(new StringReader(result));
       JAXBElement<String> je = unmarshaller.unmarshal(xmlSource, String.class);
       System.out.println(je.getValue());

    } catch (Exception e) {
       e.printStackTrace();
    }

你能帮我吗 ??

谢谢 !

4

2 回答 2

0

要使用 JAXB 编组器,您应该使用 JAXB 注释。我确定 java.lang.String 没有任何注释。您必须根据 XML 结构对类进行实际建模并使用 JAXB 注释对其进行注释,然后您可以使用 JAXB 编组器来解组字符串。

于 2013-06-19T12:35:34.043 回答
0

在您的示例中使用 JAXB 需要您构建一个与您收到的 XML 文件中的数据完全相同的 Object 结构。如果您没有用于自动构建 JAXB 类的 XML 模式,这可能会变得复杂。

因此,构建文档要简单得多,您无需为此解决方案将任何内容保存到文件中:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document dc = parser.parse(conn.getInputStream());
于 2013-06-19T12:42:57.600 回答