0

我在 Vaadin 做一个项目,需要做以下事情。我发出一个服务器请求并得到一个 XML 字符串作为响应。而且,我对这个 XML 文件在运行时的外观一无所知。我需要将此 XML 字符串转换为 vaadin 树。

我已经看到了一些答案,他们说要加载到 HierarchicalContainer 中,但我无法理解。

请帮我!

4

1 回答 1

3

如果您不想使用 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);
        }
    }
}
于 2013-06-13T13:13:55.403 回答