感谢您抽出时间阅读。
在提问之前,我想指出,我已经在StackOverflow/互联网上阅读了尽可能多的类似文章。
我的目标是将来自API请求的响应反序列化为可用的java对象。
我正在向终结点发送 POST 请求,以便在我们的计划中创建作业。作业创建成功,并在正文中返回以下 XML:
<entry xmlns="http://purl.org/atom/ns#">
<id>0</id>
<title>Job has been created.</title>
<source>com.tidalsoft.framework.rpc.Result</source>
<tes:result xmlns:tes="http://www.auto-schedule.com/client">
<tes:message>Job has been created.</tes:message>
<tes:objectid>42320</tes:objectid>
<tes:id>0</tes:id>
<tes:operation>CREATE</tes:operation>
<tes:ok>true</tes:ok>
<tes:objectname>Job</tes:objectname>
</tes:result>
</entry>
但是,当我尝试将其散集到POJO中时,映射没有按预期工作。
为了简单起见,我试图只捕获第一个字段,id,title和source(我试图只捕获一个字段——id——并且我还尝试了所有字段,但没有成功)。
以下是POJO的外观:
@XmlRootElement(name = "entry", namespace = "http://purl.org/atom/ns#")
@XmlAccessorType(XmlAccessType.FIELD)
public class Response {
@XmlElement(name = "id")
private String id;
@XmlElement(name = "title")
private String title;
@XmlElement(name = "source")
private String source;
public Response() {}
}
为了检查是否捕获了Xml元素,我记录了属性,这些属性为空:
Response{id='null', title='null', source='null'}
Feign是发送请求的HTTP客户端,下面是客户端文件:
@FeignClient(name="ReportSchedulerClient", url = "https://scheduler.com", configuration = FeignClientConfiguration.class)
public interface ReportSchedulerClient {
@PostMapping(value = "/webservice", consumes = "application/xml", produces = "text/xml")
Response sendJobConfigRequest(@RequestBody Request request);
}
和一个用于身份验证的简单自定义配置文件:
public class FeignClientConfiguration {
@Bean
public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
return new BasicAuthRequestInterceptor("user", "pass");
}
}
我试图避免显式取消编组文件,但我也尝试使用如下内容显式解组请求:
Response response = (Response) unmarshaller.unmarshal(new StreamSource(new StringReader(response.body().toString())));
如果您有任何建议,如果我的代码有任何问题,或任何替代建议,请告诉我。提前谢谢。
您需要在元素级别指定命名空间
。例如:
@XmlElement(name = "id", namespace = "http://purl.org/atom/ns#")
private String id;
要设置默认名称空间,可以在包级别创建包信息。包文件夹中的java文件,内容如下:
@XmlSchema(
namespace = "http://purl.org/atom/ns#",
elementFormDefault = XmlNsForm.QUALIFIED)
package your.model.package;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
此外,当您显式地将< code>@XmlElement添加到所有字段中时,您可以移除< code > @ XmlAccessorType(XmlAccessType。FIELD)注释,因为它的目的是在默认情况下将所有字段映射到元素。
我试图将我下面的xml转换为java对象。 这是我的xml: 我需要在"提供者组织"下获取"name"的值。下面是我Java课。 诊所ocument.java 记录目标。JAVA 病人ole.java 供应商组织。JAVA XMLFileParserSAXUtility.java 我得到的结果是 如果我尝试打印syso(临床文件); 结果是临床文档[recordTarget=null] 请帮帮我!
我遵循这个教程: https://www.w3schools.com/php/php_xml_dom.asp 循环遍历XML部分是有问题的。出于某种原因,PHP将DOM对象视为数组。此外,var_dump除了长度之外,不返回任何关于对象属性的信息,但程序输出看起来像是不知从何而来。foreach可以通过某种方式循环对象吗?如果有,这些属性(节点名和节点值)包含在哪里,因为var_dump没有显示它
问题内容: 有一个丑陋的XML文件必须解组: 产生的Java对象应为: 这个问题的答案非常接近,但我不知道最终的解决方案。 问题答案: 怎么样? 介绍一个称为选项的通用超类: 然后在带有选项列表的类(在本示例中为Configuration)上,在该属性上指定一个@XmlJavaTypeAdapter: XmlAdapter看起来像这样: AdaptedOptions看起来像:
我尝试了一切,但图像不会显示出来,我试图使图像变小但没有用,我试图改变路径,我试图改变图像的位置但没有帮助,我试图在互联网上搜索但一无所获。 我看到的只是空白的图形用户界面,没有文本和图像。如果你能帮我,你会帮我一个大忙。 代码如下:
在Java API中,它声明公共StringBuilder类扩展Object,但实际上,OpenJDK声明它扩展包私有AbstractStringBuilder类。问题:为什么Java API不能声明它扩展了AbstractStringBuilder? OpenJDK-公共最终类StringBuffer扩展AbstractStringBuilder实现java.io.Serializable,Ch
我有一个XML文件,其中包含大量员工记录(比如高达1M),如下所示: 我使用JAXB将员工记录映射到以下Java对象: XML的内容不能被更改,并且给定这个XML,我如何使用JAXB将每个员工XML记录解封给员工对象,以便我可以逐个处理它?