1

私の Web サービスは機能しており、以下のコードを使用して、サービスによって取得された XML を出力できます。

resource = client.resource("http://localhost:8080/testProject/rest/items");
ClientResponse response= resource.get(ClientResponse.class);
String entity = response.getEntity(String.class);
System.out.println(entity);

ただし、この XML を JTable のデータ プロバイダーとして使用しようとしていますが、解析方法がわかりません。私のコードは以下にありますが、「エンティティ」は文字列であるため機能しません。

    JAXBContext context = JAXBContext.newInstance(Item.class);
    Unmarshaller um = context.createUnmarshaller();
    Item item = (Item) um.unmarshal(entity);

だから私の質問は

ここで何が間違っていますか?

これを行うために .getEntity(String.Class) を使用すべきではありませんか?

この XML 応答を JTable に取得する簡単な方法はありますか?

ありがとう

4

3 に答える 3

0

応答をドキュメントとして読み取る

Document xml = wsResponse.asXml();
displayXml(xml);

その後、以下のコードスニペットを使用してテキスト変換を行い、refを使用しました

void displayXml(Document doc) {
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = null;
    try {
        transformer = tf.newTransformer();
    } catch (TransformerConfigurationException e1) {
        e1.printStackTrace();
    }
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    StringWriter writer = new StringWriter();
    try {
        transformer.transform(new DOMSource(doc), new StreamResult(writer));
    } catch (TransformerException e) {
        e.printStackTrace();
    }
    String output = writer.getBuffer().toString().replaceAll("\n|\r", "");
    System.out.println(output);
}
于 2015-12-07T15:12:25.380 に答える
0

まず、絶対に必要でない限り、xml を String データに変換しないでください(デバッグ出力には問題ありませんが、実際の作業には適していません)。私はジャージーを個人的に使用したことはありませんが、xml を文字列 (DOM ドキュメントなど) よりも優れた形式で取得できると思います。

ただし、文字列から xml を取得する必要がある場合は、次のようにアンマーシャリングできます。

um.unmarshal(new StringReader(entity));
于 2012-04-12T16:33:30.953 に答える