C# 如何在Java中反序列化HTTP POST请求的XML结果?

C# 如何在Java中反序列化HTTP POST请求的XML结果?,c#,java,xml,xml-serialization,http-post,C#,Java,Xml,Xml Serialization,Http Post,在C#中,我制作了一个http post,并以字节数组(bret)的形式在响应中获取一个xml,我可以轻松地将其反序列化为一个类: MemoryStream m = new MemoryStream(bret); XmlSerializer s = new XmlSerializer(typeof(TransactionResults)); TransactionResults t = (TransactionResults)s.Deserialize(m); 在Java中,做同样的事情的正确

在C#中,我制作了一个http post,并以字节数组(bret)的形式在响应中获取一个xml,我可以轻松地将其反序列化为一个类:

MemoryStream m = new MemoryStream(bret);
XmlSerializer s = new XmlSerializer(typeof(TransactionResults));
TransactionResults t = (TransactionResults)s.Deserialize(m);

在Java中,做同样的事情的正确和最简单的方法是什么

或使用HttpClient:

根据您序列化数据的方式,您应该使用相应的反序列化程序。对于此类任务,XStream是一个很好的简单选择:

所有这些都需要更多的代码,但这是.NET与Java系统之间的典型折衷(虽然代码更多,但Java也有优势)。

使用-for-for-get请求:

XStream xstream = new XStream(new DomDriver());
xstream.alias("person", Person.class);
URL url = new URL("www.foo.bar/person/name/foobar");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
Person foobar = (Person) xstream.fromXML(in);
您可以修改对url的调用。

(),以使用多种实现将对象转换为XML:,(我是技术负责人)

可以使用以下代码在Java中访问HTTP操作:

String uri =
    "http://localhost:8080/CustomerService/rest/customers/1";
URL url = new URL(uri);
HttpURLConnection connection =
    (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");

JAXBContext jc = JAXBContext.newInstance(Customer.class);
InputStream xml = connection.getInputStream();
Customer customer =
    (Customer) jc.createUnmarshaller().unmarshal(xml);

connection.disconnect();
上述代码示例来自:

有关JAXB和XStream的比较,请参见:


如果您不想将结果映射到类中,您可能需要签出。 它使访问JSON、XML或任何其他数据类型成为一个简单的过程。 下面是将Slashdot RSS解析为XML并打印所有链接文章的代码

Resty r = new Resty();
NodeList nl = r.xml("http://rss.slashdot.org/Slashdot/slashdotGamesatom").get("feed/entry/link");
for (int i = 0, len = nl.getLength(); i < len; i++) {
    System.out.println(((Element)nl.item(i)).getAttribute("href"));
}
Resty r=new Resty();
NodeList nl=r.xml(“http://rss.slashdot.org/Slashdot/slashdotGamesatom)获取(“提要/条目/链接”);
for(int i=0,len=nl.getLength();i
请随意将标题编辑为更正确的内容