我试图解开这个xml片段
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<ns1:tMLHeader soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0"
xmlns:ns1="http://tml.t1m1.org/tML.Transport.xsd">
<ns1:TransportID>111-23-Some_code--12</ns1:TransportID>
<ns1:ApplicationType>Any_type</ns1:ApplicationType>
<ns1:ApplicationVersion>1.0</ns1:ApplicationVersion>
<ns1:From>XXX</ns1:From>
<ns1:To>YY_G</ns1:To>
<ns1:SendTimestamp>2021-11-11T10:25:56.858-06:00</ns1:SendTimestamp>
<ns1:RetryCount>0</ns1:RetryCount>
</ns1:tMLHeader>
</soapenv:Header>
<soapenv:Body>
<processSyncRequestResponse xmlns="java:lsr.webservice.wisor.com">
<response xmlns="">mocked response</response>
</processSyncRequestResponse>
</soapenv:Body>
</soapenv:Envelope>
但是尽管我采取了行动,结果总是几乎相同的(4个或2个空字段):
{
"Header": null,
"Body": null,
"header": null,
"body": null
}
我以前的操作是:定义构造函数(所有字段,没有字段),添加setter和getter,并将其标记为@xmlement。对具有属性顺序的子类使用@XmlType。还尝试使用包信息和ObjectFactory。我从Stack Overflow的示例中尝试过的当前版本:由于所有字段的名称都是匹配的xml字段,因此只能使用@XmlAccessorType(XmlAccessType.FIELD)以及getter和setter。但结果仍然是一样的。有人能帮我解释一下它是怎么工作的吗?
解组:
File xml = new File("test.xml");
return (Envelope)JAXBContext
.newInstance(Envelope.class)
.createUnmarshaller()
.unmarshal(xml);
课程:
@XmlRootElement(name="Envelope",namespace = "http://schemas.xmlsoap.org/soap/envelope/")
@XmlAccessorType(XmlAccessType.FIELD)
public class Envelope {
public Header Header;
public Body Body;
public Header getHeader() {
return Header;
}
public void setHeader(Header header) {
Header = header;
}
public Body getBody() {
return Body;
}
public void setBody(Body body) {
Body = body;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Header {
public tMLHeader tMLHeader;
public tMLHeader gettMLHeader() {
return tMLHeader;
}
public void settMLHeader(tMLHeader tMLHeader) {
this.tMLHeader = tMLHeader;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
public class tMLHeader {
public String TransportID;
public String ApplicationType;
public double ApplicationVersion;
public String From;
public String To;
public Date SendTimestamp;
public int RetryCount;
public String getTransportID() {
return TransportID;
}
public void setTransportID(String transportID) {
TransportID = transportID;
}
....//other setters and getters
@XmlAccessorType(XmlAccessType.FIELD)
public class Body {
@XmlElement(name = "processSyncRequestResponse")
public ProcessSyncRequestResponse processSyncRequestResponse;
public ProcessSyncRequestResponse getProcessSyncRequestResponse() {
return processSyncRequestResponse;
}
public void setProcessSyncRequestResponse(ProcessSyncRequestResponse processSyncRequestResponse) {
this.processSyncRequestResponse = processSyncRequestResponse;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
public class ProcessSyncRequestResponse {
public String response;
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
}
提前感谢
您需要为字段添加命名空间。
对于Envelope
类,可以如下所示。
@XmlRootElement(name="Envelope",namespace = "http://schemas.xmlsoap.org/soap/envelope/")
@XmlAccessorType(XmlAccessType.FIELD)
public class Envelope {
@XmlElement(name="Header", namespace = "http://schemas.xmlsoap.org/soap/envelope/")
private Header header;
@XmlElement(name="Body", namespace = "http://schemas.xmlsoap.org/soap/envelope/")
public Body body;
public Header getHeader() {
return header;
}
public void setHeader(Header header) {
this.header = header;
}
public Body getBody() {
return Body;
}
public void setBody(Body body) {
this.body = body;
}
}
(将注释添加到标题和tMLHeader中的所有字段)
我们的Spring Batch应用程序在重新启动失败的作业时,再次处理相同的记录,导致重复的行,我们希望了解如何避免这种情况。 启动批处理作业的Spring集成轮询器配置为每两个小时运行一次。第二次运行时,作业参数将相同,但如果上一次运行失败(例如,由于数据截断异常),Spring Batch不会抱怨作业已完成。 在故障点,几十万条记录已经被处理并从源表复制到目标表。在以后运行作业时,相同的行将复
我有一个简单的xml要解组。但是我在输出中只得到一个空列表。不会引发任何异常。这是一个第三方生成的xml,我需要使这一工作没有任何变化的xml。 XML: 用于动物的POJO豆: 猫咪的POJO豆 非马歇尔代码是: 最后一行给出了空指针异常。 我是否对 BEAN 类中的命名空间执行了操作?我是Jaxb的新手,这个问题现在困扰了我3天!我之前问过这个问题,但无法得到正确的答案,这是一个更准确的问题。
我有一张非常复杂的表格,是这样的:- 现在,我需要处理一个应该重复一行的查询,其中假设p2、p3或p1、p2甚至仅p2值对于该特定年份或从2009年、2010年或2011年中的任何一年都不可用,并将最后一列的值作为零放入其中。 所以现在我的数据库看起来应该像- 我试着使用临时表 但它不起作用。有谁能帮我。
我正在使用空手道框架进行我的自动化测试项目,目前我也在使用cucumber报告。 现在我面临一个问题,在Jenkins中只重新运行失败的测试 尝试使用-Dsurefire.rerunFailingTestsCount,但它不起作用。是否有任何特定的配置来实现这一点。
得到了经典作业,我需要创建学生和课程类以及驾驶员类。 我在计算我的课程班级的整体平均成绩时遇到了问题。一切都正常,但当我运行驱动程序时,我得到了“0”作为类平均值。在IDE中,它告诉我s中的“s”。getAverage();'在getClassAverage方法中无法解决,但我不确定为什么,因为我在其他地方使用它很好。我试着遍历一组学生,把他们的平均数加起来。 有什么指示吗?谢谢你的时间! 大学生
从我所读到的一切来看,它应该是可行的,但是以下几点: 在…内 不工作。与应用程序加载类似,但使用的是recyclingView\u Main。adapter=MainAdapter()似乎未运行。 完整代码: 正如您从上面的代码中看到的,当我将其放在onCreate中时,它工作得很好。 因此,问题似乎是将其发送到主线程。 XML