gpt4 book ai didi

java - XML 结构创建问题

转载 作者:行者123 更新时间:2023-12-01 16:08:49 25 4
gpt4 key购买 nike

我的数据采用以下格式(HashMap的列表)

{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);

附注定义的格式可能不正确,但只需要这样就可以得到预期的输出!

最佳答案

如果要修改使用代码生成的节点的属性 ID,请修改包含 em_child.setAttribute("id", serverId+"."+clientId); 的行适本地。父节点 id 的生成方式类似。

我不确定您的 xml 是否不完整,但在 XML 中您需要拥有根或文档实体。

"A [XML] document begins in a "root" or document entity." - http://www.w3.org/TR/REC-xml/#sec-documents

关于java - XML 结构创建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com