gpt4 book ai didi

java - 使用 Comparator 排序时,Content 已经有一个现有的父级

转载 作者:太空宇宙 更新时间:2023-11-04 14:47:51 25 4
gpt4 key购买 nike

我使用 jdom2 从 xml 字符串获取元素列表。并想通过 getChildText 对其进行排序。

这是我的比较器:

public class ComparatorFunc implements Comparator {
public int compare(Object arg0, Object arg1) {
Element e1 = (Element) arg0;
Element e2 = (Element) arg1;

int flag = e1.getChildText("EntType").compareTo(e2.getChildText("EntType"));
return flag;
}
}

这是我的代码:

String xmlStr = request.getParameter("xmlStr");
xmlStr = xmlStr.trim();
//System.out.println(xmlStr);

ByteArrayInputStream xmlStream = null;

try {
xmlStream = new ByteArrayInputStream(xmlStr.getBytes("UTF-8"));
if (xmlStream != null) {
SAXBuilder builder = new SAXBuilder(false);
org.jdom2.Document document = builder.build(xmlStream);

Element root = document.getRootElement();

List<Element> listItem = root.getChildren("item");
ComparatorFunc comparator = new ComparatorFunc();
Collections.sort(listItem, comparator);

.....

但我收到此错误:

org.jdom2.IllegalAddException: The Content already has an existing parent "design"

那我该怎么办?

最佳答案

JDOM 要求内容始终有效。这包括排序过程中的中间结果。

Java 的 native 排序方法通过首先将内容“设置”到新位置来交换内容,然后再从旧位置“删除”内容,从而创建重复项。

这是一个已知问题。

解决方案是使用 sort method on the Element它做的事情“正确”。

如果需要,您还可以 sortContent() 或 sortAttributes()。

作为旁注,请考虑以下输入内容:

org.jdom2.Document document = builder.build(new StringReader(xmlStr));

关于java - 使用 Comparator 排序时,Content 已经有一个现有的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24176765/

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