Java 如何删除GET请求中的一些XML标记
我想在浏览器上打印如下内容:Java 如何删除GET请求中的一些XML标记,java,xml,rest,jpa,jaxb,Java,Xml,Rest,Jpa,Jaxb,我想在浏览器上打印如下内容: <measureTypes> <measureType>weight</measureType> <measureType>height</measureType> <measureType>steps</measureType> <measureType>bloodpressure</measureType> </mea
<measureTypes>
<measureType>weight</measureType>
<measureType>height</measureType>
<measureType>steps</measureType>
<measureType>bloodpressure</measureType>
</measureTypes>
但我得到的结果是:
<measureDefinitions>
<measureDefinition>
<measureName>weight</measureName>
</measureDefinition>
<measureDefinition>
<measureName>height</measureName>
</measureDefinition>
<measureDefinition>
<measureName>steps</measureName>
</measureDefinition>
<measureDefinition>
<measureName>blood pressure</measureName>
</measureDefinition>
<measureDefinition>
<measureName>heart rate</measureName>
</measureDefinition>
<measureDefinition>
<measureName>bmi</measureName>
</measureDefinition>
</measureDefinitions>
以下是我在模型类中的代码:
@NamedQuery(name="MeasureDefinition.findAll", query="SELECT m FROM MeasureDefinition m")
public static List<MeasureDefinition> getAll() {
EntityManager em = LifeCoachDao.instance.createEntityManager();
List<MeasureDefinition> list = em.createNamedQuery("MeasureDefinition.findAll", MeasureDefinition.class).getResultList();
LifeCoachDao.instance.closeConnections(em);
return list;
}
以下是资源类中的代码这是我打印输出的地方:
@GET
@Produces({MediaType.TEXT_XML, MediaType.APPLICATION_JSON , MediaType.APPLICATION_XML })
public List<MeasureDefinition> getMeasuresTypes() {
EntityManager em = LifeCoachDao.instance.createEntityManager();
System.out.println("Getting list of measures...");
List<MeasureDefinition> measures = MeasureDefinition.getAll();
System.out.println("Measures " + measures);
System.out.println("Size of the list " + measures.size());
return measures;
}
因此,我的问题是:如何从输出中删除?我做错什么了吗 您可能需要围绕该列表创建客户包装,然后执行以下操作:
@XmlRootElement(name = "measureTypes")
public class MessageDefinitionResult {
@XmlElement(name = "measureType")
@XmlJavaTypeAdapter(MeasureDefinitionXmlAdapter.class)
private List<MeasureDefinition> measureDefinitions;
public MessageDefinitionResult(final List<MeasureDefinition> measureDefinitions) {
this.measureDefinitions = measureDefinitions;
}
public MessageDefinitionResult() { }
public List<MeasureDefinition> getMeasureDefinitions() {
return measureDefinitions;
}
public static final class MeasureDefinitionXmlAdapter extends XmlAdapter<String, MeasureDefinition> {
@Override
public MeasureDefinition unmarshal(final String v) throws Exception {
return null; // or whatever
}
@Override
public String marshal(final MeasureDefinition v) throws Exception {
return v.getName();
}
}
}
你能发布MeasureDefinition.findAll查询和measuredefinitionbean吗?我已经发布了。它是在@NamedQueryAsies中定义的,最有效的方法是不发送MeasureDefinition列表,而是发送单个MeasureDefinition,然后使measureName属性成为字符串列表。这将为您提供所需的输出。
package de.zalando.shop.frontend.springmvc.controller.user.account;
/**
* @author mochieng (marembo.isaiah.ochieng@zalando.de)
* @since Nov 13, 2015
*/
public class MeasureDefinition {
private String name;
private String value;
private String moreValuesAndProperties;
public MeasureDefinition(final String name) {
this.name = name;
}
public MeasureDefinition(final String name, final String value, final String moreValuesAndProperties) {
this.name = name;
this.value = value;
this.moreValuesAndProperties = moreValuesAndProperties;
}
public MeasureDefinition() { }
public String getName() {
return name;
}
public String getValue() {
return value;
}
public String getMoreValuesAndProperties() {
return moreValuesAndProperties;
}
}