gpt4 book ai didi

java - XML 的分层 Vaadin 树 (MSDL)

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

我尝试从 XML 文件 (MSDL) 构建 Vaadin 树,但我一直在向树中添加子项。到目前为止,我可以从 XML 文件中读取并显示我想要的标签/信息,但我无法从中创建层次结构,例如:

我有一个 XML 文件,其中包含有关行星及其卫星以及它们所在星系的一些信息:

Milky Way
-Sunsystem
-Earth
-"Moon"
-Mars
-Phobos
-Deimos
-Saturn
-Titan
-Tethys
Pinwheel Galaxy
-somesystem
-weirdPlanet1
-moon1
-moon2
-weirdPlanet2
-moon1
-moon2

现在我想在我的 vaadin 树中拥有相同的结构。我尝试了很多事情,但结果总是相同的:添加到树中的一些空值我只能看到星系,但我无法展开它们,或者我可以看到一棵包含所有信息的树,但刚刚列出的所有行星/卫星都没有结构:/

最佳答案

我很确定这与树本身没有任何关系。您可以尝试以下操作,而不是将数据直接添加到树中:

  1. 将 XML 数据解析为 HierarchicalContainer
  2. 使用下面的示例代码迭代 HierarchicalContainer 并验证它是否与您的 XML 文件结构相同
  3. 通过调用Tree.setContainerDataSource(Container)将数据容器绑定(bind)到树上

迭代 HierarchicalContainer 的示例代码:

void iterateContainer() {
for(Object rootItemId : myContainer.rootItemIds()) {
Item rootItem = myContainer.getItem(rootItemId);
System.out.println(rootItem.getItemProperty(myLabelProperty).getValue());

iterateChildren(rootItemId, 1);
}
}

void iterateChildren(Object parentItemId, int indent) {

for(Object childItemId : myContainer.getChildren(parentItemId)) {
Item childItem = myContainer.getItem(childItemId);

for(int i = 0; i < indent; i++) {
System.out.print(" ");
}
System.out.println(childItem.getItemProperty(myLabelProperty).getValue());

if(myContainer.hasChildren(childItemId)) {
iterateChildren(childItemId, indent+1);
}
}

}

这只是一些未经测试的 QnD 代码,但这应该可以帮助您迭代容器。

编辑:刚刚注意到我的答案可能(部分)是一个愚蠢的解决方案,因为 Tree 已经利用了 HierarchicalContainer。您可以初始化 myContainer HierarchicalContainer myContainer = (HierarchicalContainer) myTree.getContainerDataSource(); 并使用上面的代码。

edit2:如果结构不相同,请查看哪里出了问题,然后让调试器完成其余的工作..:)

关于java - XML 的分层 Vaadin 树 (MSDL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8341039/

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