我在 JAVA 上的 REST Web 服务开发中遇到问题。
问题:我的网络服务从 SQL Server 数据库中获取数据。它包含字段数。有一个字段包含一个 XML 标记。所以我必须创建包含所有数据库字段的 XML 文件并将 XML 标记附加到它。
在这里,我可以从数据库中获取数据并构建 XML 文件,但我无法删除默认的 XML 标记名称。
如何删除默认的 XML 标记名称?我尝试过@XMLElement 选项,但从未成功。请帮忙!
电流输出:
<CardProfile>
<cardID="1">
<accountType>1</accountType>
.
.
.
</card>
<ProfileXML><Profile ID="1"><Signature>adfalfjalj/Signature></Profile></ProfileXML>
</CardProfile>
期望的输出:
<CardProfile>
<card cardID="1">
<accountType>1</accountType>
.
.
.
</card>
<Profile ID="1"><Signature>adfalfjalj/Signature></Profile>
</CardProfile>
卡片.java
package pinpad.repositoryservice;
import javax.xml.bind.annotation.*;
public class Card {
private int CardID;
private String CardHolderName;
private String Track1Data;
private String Track2Data;
private String Track3Data;
private String PANNumber;
private String ExpiryDate;
private String CVV;
private String Address;
private String ZipCode;
private String DriverID;
private String AccountTypeCreditDebit;
@XmlAttribute (name = "ID")
public int getCardID() {
return CardID;
}
public void setCardID(int id) {
this.CardID = id;
}
@XmlElement
public String getCardHolderName() {
return CardHolderName;
}
public void setCardHolderName(String CardHolderName) {
this.CardHolderName = CardHolderName;
}
@XmlElement
public String getTrack1Data() {
return Track1Data;
}
public void setTrack1Data(String Track1Data) {
this.Track1Data = Track1Data;
}
@XmlElement
public String getTrack2Data() {
return Track2Data;
}
public void setTrack2Data(String Track2Data) {
this.Track2Data = Track2Data;
}
@XmlElement
public String getTrack3Data() {
return Track3Data;
}
public void setTrack3Data(String Track3Data) {
this.Track3Data = Track3Data;
}
@XmlElement
public String getPANNumber() {
return PANNumber;
}
public void setPANNumber(String PANNumber) {
this.PANNumber = PANNumber;
}
@XmlElement
public String getExpiryDate() {
return ExpiryDate;
}
public void setExpiryDate(String ExpiryDate) {
this.ExpiryDate = ExpiryDate;
}
@XmlElement
public String getCVV() {
return CVV;
}
public void setCVV(String CVV) {
this.CVV = CVV;
}
@XmlElement
public String getAddress() {
return Address;
}
public void setAddress(String Address) {
this.Address = Address;
}
@XmlElement
public String getZipCode() {
return ZipCode;
}
public void setZipCode(String ZipCode) {
this.ZipCode = ZipCode;
}
@XmlElement
public String getDriverID() {
return DriverID;
}
public void setDriverID(String DriverID) {
this.DriverID = DriverID;
}
@XmlElement
public String getAccountTypeCreditDebit() {
return AccountTypeCreditDebit;
}
public void setAccountTypeCreditDebit(String AccountTypeCreditDebit) {
this.AccountTypeCreditDebit = AccountTypeCreditDebit;
}
}
CardProfile.java
package pinpad.repositoryservice;
import javax.xml.bind.annotation.*;
@XmlRootElement(name = "CardProfile")
@XmlAccessorType(XmlAccessType.FIELD)
public class CardProfile {
@XmlElement (name = "Card")
public Card cards = new Card();
public String ProfileXML;
/**
* @return the cards
*/
public Card getCards() {
return cards;
}
/**
* @param cards the cards to set
*/
public void setCards(Card cards) {
this.cards = cards;
}
/**
* @return the profileXML
*/
public String getProfileXML() {
return ProfileXML;
}
/**
* @param profileXML the profileXML to set
*/
public void setProfileXML(String profileXML) {
ProfileXML = profileXML;
}
}
CardProfileRepositoryService.java
package pinpad.repositoryservice;
import javax.ws.rs.*;
/*
* Holds Card and Profiles and exposes REST interface to answer a profile and card data
* based on profile ID and card ID
*/
@Path("/cardprofile")
public class CardProfileRepositoryService {
CardProfile cardprofiles = new CardProfile();
@GET
@Path("/query/")
@Produces("application/xml")
public CardProfile getCardProfile(
@QueryParam("cardid") int CardID,
@QueryParam("profileid") int ProfileID) {
DatabaseManager databaseManager = new DatabaseManager();
databaseManager.getConfigProperties();
databaseManager.getDataBaseConnection();
cardprofiles = databaseManager.executeSprocGetCardProfile(CardID, ProfileID);
databaseManager.closeDataBaseConnection();
return cardprofiles;
}
}
标签值完全来自数据库。所以我想删除标签名称,所以它只会是 Value.. 。