我在 Vaadin 做一个项目,需要做以下事情。我发出一个服务器请求并得到一个 XML 字符串作为响应。而且,我对这个 XML 文件在运行时的外观一无所知。我需要将此 XML 字符串转换为 vaadin 树。
我已经看到了一些答案,他们说要加载到 HierarchicalContainer 中,但我无法理解。
请帮我!
我在 Vaadin 做一个项目,需要做以下事情。我发出一个服务器请求并得到一个 XML 字符串作为响应。而且,我对这个 XML 文件在运行时的外观一无所知。我需要将此 XML 字符串转换为 vaadin 树。
我已经看到了一些答案,他们说要加载到 HierarchicalContainer 中,但我无法理解。
请帮我!
如果您不想使用 HierarchicalContainer (我没有这方面的经验),您可以像这样递归地解析 XML 文档:Recursive XML-parser
然后只需添加项目并设置父项。像这样的东西:
@Override
protected void init(VaadinRequest request) {
Tree tree = new Tree();
setContent(tree);
try {
File fXmlFile = new File("C:\\temp\\sample.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
Element root = doc.getDocumentElement();
Object rootItem = root.getNodeName();
tree.addItem(rootItem);
addChildrenToTree(tree, root.getChildNodes(), rootItem);
} catch (Exception e) { }
}
private void addChildrenToTree(Tree tree, NodeList children, Object parent) {
if (children.getLength() > 0) {
for (int i = 0; i < children.getLength(); i++) {
Node node = children.item(i);
Object child = node.getNodeName();
tree.addItem(child);
tree.setParent(child, parent);
addChildrenToTree(tree, node.getChildNodes(), child);
}
}
}