原題: 所以我有一個有一堆與連接到它們的值標籤的大Excel工作表,認爲Party_Name是與「IBM」是在特定的單元格的值的標籤。我讀過他們都到一個HashMap,鍵爲標籤和值是單元(包括String類型)的值。事情是,我希望能夠給每個綁定的XML標記,以便它會在Web瀏覽器,當我將它指向一個締約方的具體路徑顯示。是否可以動態設置這些xml元素,因爲靜態製作100多個標籤會很痛苦?如何將HashMap的鍵設置爲XML文件中的標籤?
更新:我已經能夠讀取Excel表格中的所有標籤/值到HashMap中,然後將其轉換爲AdaptedMap,以便動態顯示hashpmap中每個條目的值/鍵。事情是它是醜陋的,該格式目前像現在這樣
<Party>
<entry>
<key> PARTY_NAME> </key>
<value> IBM </value>
</entry>
<entry>
<key> id </key>
<value> 123456 </value>
...etc
我想格式化,這樣更有像這樣
<Party>
<entry>
<PARTY_NAME> IBM </PARTY_NAME>
</entry>
<entry>
<id> 123456 </id>
etc...
甚至擺脫了「項」標籤。任何人都知道如何做到這一點?這裏是我的相關代碼:
package pojo;
import java.util.HashMap;
import java.util.Map;
import java.io.File;
import javax.xml.bind.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import org.eclipse.persistence.jaxb.MarshallerProperties;
@XmlRootElement(name="Party")
@XmlAccessorType(XmlAccessType.FIELD)
public class Party {
HashMap <String,String> partyInfo = new HashMap<String,String>();
public HashMap<String,String> getPartyInfo() throws Exception
{
MapAdapter adapter = new MapAdapter();
adapter.marshal(partyInfo);
return partyInfo;
}
而這裏的涉及同樣的問題(鏈接在頁面底部)
package pojo;
import java.util.*;
import java.util.Map.Entry;
import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import org.eclipse.persistence.oxm.annotations.XmlVariableNode;
public class MapAdapter extends XmlAdapter<MapAdapter.AdaptedMap, Map<String, String>>{
public static class AdaptedMap
{
@XmlVariableNode("key")
List<AdaptedEntry> entries = new ArrayList<AdaptedEntry>();
}
public static class AdaptedEntry
{
@XmlTransient
public String key;
@XmlValue
public String value;
}
@Override
public AdaptedMap marshal(Map<String,String> map) throws Exception
{
AdaptedMap adaptedMap = new AdaptedMap();
for(Entry<String, String> entry : map.entrySet())
{
AdaptedEntry adaptedEntry = new AdaptedEntry();
adaptedEntry.key= entry.getKey();
adaptedEntry.value=entry.getValue();
adaptedMap.entries.add(adaptedEntry);
}
return adaptedMap;
}
需要注意的是,我從我剛纔的問題採取了類:我是新來的,所以我在回答上一個問題時,對禮節不確定。在任何情況下,這裏的鏈接,原來的問題
How to set xml annotations dynamically?
注2:我很nooby使用XML註解,如果有什麼是錯得離譜,那是因爲它的一些我已經複製,而不是理解邏輯。我試着閱讀它的javadoc,但它不是完全清楚,可能從我的經驗不足的XML以及
很大,這正是我一直在尋找謝謝! – sreya
你的例子很棒thx我只有一個問題。我也使用jackson庫,它看起來傑克遜不使用XmlJavaAdapter註釋,派對元素簡單地從輸出中丟失。如果我註釋掉XmlJavaAdapter註釋對象存在,但不是以適當的形式。你有什麼想法爲什麼發生這種情況? –