我想问一下如何从对象生成xml?
假设它是json,我只需要使用jaskson或Gson
json = someObj.writeValueAsString
但是对于我通过互联网搜索的xml,它似乎需要先构造文档?比如将其写入流写器,然后输出到某个目录成为文件(xxx.xml)?
但我的目的是(从一个物体上)构造
如果有人能帮我解析,我会非常高兴。我的意思是,比如如何调用Http请求,将xml放入正文,并发送到某个url。
val url = "https://api.mch.weixin.qq.com/pay/unifiedorder"
val headers = HttpHeaders()
headers.contentType = MediaType.APPLICATION_XML
val xmlMapper = XmlMapper()
var strObject = xmlMapper.writeValueAsString(wxPayOrderWithSign).replace(Regex("<[^>]*?/>"), "")
strObject = strObject.substring(12,strObject.length - 13)
strObject = "<xml>$strObject</xml>"
val entity = HttpEntity(strObject, headers)
val respEntity = restTemplate.postForEntity(url, entity, String::class.java)
val return_msg = respEntity.body
这里是我在kotlin中的代码,但这不是正确的方法,因为在将对象转换为字符串的过程中,我使用正则表达式替换某些字符。
我需要生成类似于
<xml>
<appid>wx0b6d2803d20b379f1</appid>
<body>QQMember-TopUp</body>
<detail>test</detail>
<mch_id>1508478951</mch_id>
<nonce_str>c9c21120a9724ee993e6f9c866ec30e1</nonce_str>
<notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
<out_trade_no>20150806125346</out_trade_no>
<sign>6E18248C5FFA26D1A96BD8F6A0B0CB02</sign>
<spbill_create_ip>123.12.12.123</spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>JSAPI</trade_type>
</xml>
JAXB自第6版开始随java sdk提供,并提供了一种简单的方式来mashalling和unshalling java对象:
@XmlRootElement
public class Transaction {
private Long id;
private Float value;
private Boolean authorized;
public static void main(String[] args) throws JAXBException {
Transaction transaction = new Transaction();
transaction.setId(1L);
transaction.setValue(20.9f);
transaction.setAuthorized(true);
JAXBContext jaxbContext = JAXBContext.newInstance( Transaction.class );
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, true );
jaxbMarshaller.marshal( transaction, new File( "transaction.xml" ) );//save to file
jaxbMarshaller.marshal( transaction, System.out ); //send to stdout
//raw xml as string
StringWriter writer = new StringWriter();
jaxbMarshaller.marshal( transaction, writer);
String rawXml = writer.toString();
}
}
输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<transaction>
<authorized>true</authorized>
<id>1</id>
<value>20.9</value>
</transaction>
使用RestTemplate,只需在HttpEntity构造函数中传递应作为XML发送的对象,如:
Transaction transaction = new Transaction();
transaction.setId(1L);
transaction.setValue(20.9f);
transaction.setAuthorized(true);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_XML);
HttpEntity<Transaction> request = new HttpEntity<Transaction>(transaction, headers);
ResponseEntity<String> response = restTemplate.postForEntity("http://localhost:8080/xml/transactions", request, String.class);
我有个简单的课 我创建了这个类的样本对象的ArrayList 这里没有显示我后来如何填充对象的其他字段(名称,地址等) 有没有一种方法可以使用字母数字字符串id快速检索其中一个对象,而无需遍历整个列表?(没有实现数据库层) 差不多
问题内容: Windows上的Python 3.5,请尝试以下操作: 引发异常: multiprocessing.Process的子类抛出相同的异常: 问题答案: 这样的事情应该起作用: 基本上,a需要a ,并且由于任何原因,实例被腌制时都不会保存(例如,不在方法中)。如果您需要更多的状态(即其他并从方法),那么你就需要从扩展的返回值上述功能。(请注意,如果您使用的是python 2.x,则相应的
问题内容: 如何制作在不可变对象中包含可变字段的可变对象的防御性副本? MutableObject没有让我设置字段的构造函数。 MutableObject的当前状态应该在Immutable Object中捕获,并且永远不要更改。 问题答案: 您需要做的是 改成: 有关说明,请参见http://www.javapractices.com/topic/TopicAction.do?Id=15
问题内容: 实现深层对象复制功能有点困难。您采取什么步骤来确保原始对象和克隆对象没有引用? 问题答案: 一种安全的方法是序列化对象,然后反序列化。这样可以确保所有内容都是全新的参考。 这是有关如何有效执行此操作的文章。 注意事项:类可能会覆盖序列化,这样就不会创建新实例,例如单例。如果您的课程不是可序列化的,那么这当然也行不通。
问题内容: 我将在React.JS中使用jsPDF库,但出现错误,如果有人得到我的查询,请告诉我。我尝试这样做超过2天,但我做不到。 问题答案: 第1步: Package.json依赖项 , 这是由于jspdf for npm无法正常工作。 第2步: 添加打印功能: 而且对我来说很好。
问题内容: 我需要从URL对象创建一个File对象我的需求是我需要创建一个网络图像的文件对象(例如googles徽标) 问题答案: 您可以利用以便从URL加载图像,然后将其写入文件。像这样: 如果需要,这还允许您将图像转换为其他格式。