原始问题:所以我有一个很大的 Excel 表,上面有一堆附有值的标签,认为 Party_Name 是标签,“IBM”是该特定单元格中的值。我已将它们全部读入 HashMap,其中键是标签,值是单元格的值(均为字符串类型)。问题是,我希望能够将每个标记绑定为一个 XML 标记,以便当我将它指向一个派对的特定路径时它会显示在 Web 浏览器中。是否可以动态设置这些 xml 元素,因为静态制作 100 多个标签会很痛苦?
更新:我已经能够将 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;
}
注意:我是新来的,所以在跟进上一个问题时我不确定礼仪。无论如何,这是原始问题的链接
注意 2:我对 xml 注释很不满意,所以如果有什么明显错误,那是因为我一直在复制其中的一些内容,而不是从逻辑上理解。我试过阅读上面的javadocs,但并不完全清楚,可能是因为我缺乏xml经验