我在下面的格式的數據(HashMap中的列表)XML結構的創作問題
{TeamName=India, Name=Sachin, Score=170}
{TeamName=India, Name=Sehwag, Score=120}
{TeamName=Sri-Lanka, Name=Sangakara, Score=20}
{TeamName=Sri-Lanka, Name=Murali, Score=20}
{TeamName=Sri-Lanka, Name=Jayasurya, Score=70}
下面是所需的輸出
<node id="1" label="India" >
<node id="1.1" label="Sachin" Score="170" />
<node id="1.2" label="Sehwag" Score="120" />
</node>
<node id="2" label="Sri-Lanka">
<node id="2.1" label="Sangakara" Score="20" />
<node id="2.2" label="Murali" Score="20" />
<node id="2.3" label="Jayasurya" Score="70" />
</node>
<node id="3" label="World-XI">
<node id="2.2" label="Murali" Score="20" />
<node id="1.1" label="Sachin" Score="170" />
</node>
現在,我已經能夠產生這樣的結構,但有問題,需要重複「node id = 3」中的id,而不是重新創建爲3.1/3.2。
另一個原因是,它並不一定是節點3是最後一個,我可以單單隻重複了,只可能有許多其他節點。
下面是當前片上面的代碼,任何建議?
Map hm = new HashMap();
Element em = null;
try {
int serverId = 0;
int clientId = 0;
DocumentBuilderFactory documentBuilderFactory =
DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
Element rootElement = document.createElement("CricketDetails");
document.appendChild(rootElement);
for (int i=0; i < l.size(); i++) {
hm = (HashMap) l.get(i);
sortListIP.add(hm.get("TeamName"));
}
Collections.sort(sortListIP);
HashSet h = new HashSet(sortListIP);
sortListIP.clear();
sortListIP.addAll(h);
for (int i=0; i < sortListIP.size(); i++) {
++serverId;
clientId = 0;
em = document.createElement("node");
em.setAttribute("id", ""+serverId);
em.setAttribute("TeamName", ""+sortListIP.get(i));
for (int j=0; j < l.size();j++) {
hm = (HashMap) l.get(j);
if (sortListIP.get(i).equals(hm.get("TeamName"))) {
Element em_child = document.createElement("node");
++clientId;
em_child.setAttribute("id", serverId+"."+clientId);
em_child.setAttribute("label", (String) hm.get("Name"));
em.appendChild(em_child);
rootElement.appendChild(em);
}
}
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult("cricketDetails.xml");
transformer.transform(source, result);
P.S.所定義的格式可能不正確,但預期的輸出只有這樣纔是必需的!
您的代碼缺少某人需要理解它的詳細信息,例如sortListIP的聲明。你也應該使用泛型集合來保證類型安全。 – 2009-12-27 01:03:29